Jestem nowy na R i mam data.frame, zwany "CT", zawierający kolumnę o nazwie "ID" zawierającą kilkaset różnych numerów identyfikacyjnych (są to pacjenci). Większość liczb pojawia się raz, ale niektóre pojawiają się dwa lub trzy razy (a więc w różnych wierszach). W CT data.frame chciałbym wstawić nową zmienną, o nazwie "countID", która wskazywałaby na liczbę wystąpień tych konkretnych pacjentów (wiele zapisów powinno wciąż pojawiać się kilka razy). Próbowałem dwa różne strategie po przeczytaniu tego forum: 1-ta strategia:liczenie wystąpień w kolumnie i tworzenie zmiennej w R
CT <- cbind(CT, countID=sequence(rle(CT.long$ID)$lengths)
Ale ta praca nie robi, ja się tylko jeden licznik. 2-te strategia: utworzyć ramkę danych z dwóch kolumnach (jeden jest identyfikator, jeden licznik) i mecz ten dataframe z CT:
tabs <- table(CT.long$ID)
out <- data.frame(item=names(unlist(tabs)),count=unlist(tabs)[],stringsAsFactors=FALSE)
rownames(out) = c()
head(out)
# item count
# 1 1.312 1
# 2 1.313 2
# 3 1.316 1
# 4 1.317 1
# 5 1.321 1
# 6 1.322 1
Tak to działa dobrze, ale nie mogę się topić dwa data.frames: the liczba wierszy nie pasuje pomiędzy "out" i "CT" (obecnie ma mniej rzędów oczywiście). Być może ktoś ma eleganckie rozwiązanie do dodawania liczby wystąpień bezpośrednio w CT danych, lub poprawnie dopasować dwa dane.frames? Dzięki z góry, Denis
+1 do do pokazywania wejście i wyjście oczekiwany, ale następnym czas, jaki publikujesz, spraw, by twój przykład [** odtwarzalny **] (http://stackoverflow.com/q/5963269/1478381) zawierał niektóre dane. witamy w SO! –