Tabla por fila con R

Me gustaría tabular por fila dentro de un marco de datos. Puedo obtener resultados adecuados usandotable dentroapply en el siguiente ejemplo:

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")})

Aquí están los resultados:

[[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 

Sin embargo, en el siguiente ejemplo, cada fila consta de un solo valor.

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")})

La salida que obtengo es:

# [1] 5 5 5 5

Como tal, no puedo decir de esta salida que los primeros 5 son para 0, los segundos 5 son para 1, los terceros 5 son para 2 y los últimos 5 son para NA. ¿Hay alguna manera de que R pueda devolver el valor representado por cada 5 en el segundo ejemplo?

Respuestas a la pregunta(4)

Su respuesta a la pregunta