如何计算每行多分类值?

问题描述 投票:-1回答:2

我有这样的数据帧:

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

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

r count row
2个回答
1
投票

使用基础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
投票

试试这个:警告(S)是(有)由于不同的因子水平。您可能需要重构。

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)
© www.soinside.com 2019 - 2024. All rights reserved.