列中的特定值的计数

时间:2016-07-26 13:24:40

标签: r survey

我有来自调查问卷的数据:

    survey <- data.frame(
    ID = sample(1:10),
    Var1 = sample(c("yes", "no"), 10, replace = TRUE),
    Var2=sample(c("DNK", "yes", "no"), 10, replace = TRUE),
    Var3=sample(c("DNK", "PNA", "yes", "no"), 10, replace = TRUE),
    Var4=sample(c("DNK", "PNA", "yes", "no"), 10, replace = TRUE)
   )

我想知道哪个变量具有最多的DNK和PNA响应。我认为这将是一个循环函数,但我似乎无法解决这个问题。
也就是说,我希望每个变量的输出计数为PNA / DNK: e.g。)

Var3: DNK 4
Var3: DNK 3, PNA 1
Var4: DNK 1, PNA 3

3 个答案:

答案 0 :(得分:1)

试试这个

library(plyr)
apply(survey[,2:5],2,count)

答案 1 :(得分:1)

我会使用:occurrences <- apply(survey, 2, table)

这将返回一个名为occurrences的列表,其中item i 包含 i 列的每个元素的出现次数。

现在只需要打印或存储输出(取决于你想要的)。您可以通过执行以下操作打印它们:

for (i in 1:length(occurrences)){
print(occurrences[i])
}

答案 2 :(得分:0)

感谢您的回复。使用提供的回复,这就是我想要的: dnk=apply(subset[,1:dim(survey)[2]], 2, function(x) length(which(x=="DNK")))