Функция table
в базе R может быть тем, что вы ищете, она дает вам универсальную опцию, которая считает все уровни:
table(unlist(df1[,c(2:7)]))
Измените это, чтобы имя фрейма данных (df1
) и номера столбцов c(2,7)
соответствовали вашим потребностям.
Это также повторяет ваш пример:
df1 <- data.frame("v" = LETTERS[1:7], "q1" = c(1,2,1,2,2,1,1), "q2" = c(2,1,2,2,1,2,2), "q3" = c(1,NA,1,1,1,1,2), "q4" = c(NA, NA,1,NA,1,2,NA), "q5" = c(NA, NA,2,NA,1,2,NA), "q6" = c(NA, NA,NA,NA,1,NA,NA))
> table(unlist(df1[,c(2:7)]))
1 2
15 12
Еще несколько примеров:
df1 <- data.frame("v" = LETTERS[1:5], "q1" = c(1,2,6,1,1), "q2" = c("k","k","f","h","p"), "q3" = c(1,2,NA,1,NA))
> df1
v q1 q2 q3
1 A 1 k 1
2 B 2 k 2
3 C 6 f NA
4 D 1 h 1
5 E 1 p NA
table(unlist(df1[,c(2,4)]))
table(unlist(df1[,3]))
> table(unlist(df1[,c(2,4)]))
1 2 6
5 2 1
> table(unlist(df1[,3]))
f h k p
1 1 2 1