Tabela po rzędzie z R
Chciałbym umieścić tabele według wierszy w ramce danych. Mogę uzyskać odpowiednie wyniki używająctable
w ciąguapply
w następującym przykładzie:
df.1 <- read.table(text = '
state county city year1 year2 year3 year4 year5
1 2 4 0 0 0 1 2
2 5 3 10 20 10 NA 10
2 7 1 200 200 NA NA 200
3 1 1 NA NA NA NA NA
', na.strings = "NA", header=TRUE)
tdf <- t(df.1)
apply(tdf[4:nrow(tdf),1:nrow(df.1)], 2, function(x) {table(x, useNA = "ifany")})
Oto wyniki:
[[1]]
x
0 1 2
3 1 1
[[2]]
x
10 20 <NA>
3 1 1
[[3]]
x
200 <NA>
3 2
[[4]]
x
<NA>
5
Jednak w poniższym przykładzie każdy wiersz składa się z jednej wartości.
df.2 <- read.table(text = '
state county city year1 year2 year3 year4 year5
1 2 4 0 0 0 0 0
2 5 3 1 1 1 1 1
2 7 1 2 2 2 2 2
3 1 1 NA NA NA NA NA
', na.strings = "NA", header=TRUE)
tdf.2 <- t(df.2)
apply(tdf.2[4:nrow(tdf.2),1:nrow(df.2)], 2, function(x) {table(x, useNA = "ifany")})
Otrzymane dane wyjściowe to:
# [1] 5 5 5 5
Jako taki, nie mogę powiedzieć z tego wyjścia, że pierwsze 5 jest za 0, drugie 5 za 1, trzecie 5 za 2, a ostatnie 5 za NA. Czy istnieje sposób, w jaki R może zwrócić wartość reprezentowaną przez każde 5 w drugim przykładzie?