如何计算每行许多分类值?

时间:2019-02-05 04:36:14

标签: r count row

我有这个数据框:

IDSurvey = c(12234,23456,12356)
Q1 = c("Yes", "No", "Yes")
Q2 = rep("No",3)
Q3 = rep("Yes", 3)
D = data.frame(IDSurvey, Q1, Q2, Q3)

希望您能帮助您找到答案。

IDSurvey  Q1 Q2  Q3 NunmberOfYes NumberOfNo
    12234 Yes No Yes  2            1 
    23456  No No Yes  1            2 
    12356 Yes No Yes  2            1

非常感谢您的帮助和耐心。问候!

2 个答案:

答案 0 :(得分:1)

使用Base R

IDSurvey = c(12234,23456,12356)
Q1 = c("Yes", "No", "Yes")
Q2 = rep("No",3)
Q3 = rep("Yes", 3)
D = data.frame(IDSurvey, Q1, Q2, Q3)
str(D)

解决方案

D$yes <- rowSums(D == "Yes",na.rm=TRUE)
D$No <-  rowSums(D == "No",na.rm=TRUE)

答案 1 :(得分:1)

尝试以下操作:警告是由于不同的因素水平引起的。您可能需要重构。

library(dplyr)
library(tidyr)
D %>% 
  gather(key,value,-IDSurvey) %>% 
with(table(IDSurvey,value))

或者这个:

D %>% 
  gather(key,value,-IDSurvey) %>% 
  group_by(IDSurvey) %>% 
  count(value) %>% 
  spread(value,n)