Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 在具有唯一行的多列中计算是/否_R - Fatal编程技术网

R 在具有唯一行的多列中计算是/否

R 在具有唯一行的多列中计算是/否,r,R,数据集看起来像这样,有18列 group q1 q2 q3 name q5 a yes yes no blanket yes b no no no water yes cc yes no no food no d yes no no utensils no 我只想计算每个组回答了多少是/否,不包括“name”列,所以我希望输出如下内容 group yes no a 15 10 b 7 1

数据集看起来像这样,有18列

group q1  q2  q3  name    q5 
a     yes yes no  blanket yes
b     no  no  no  water   yes
cc     yes no  no  food    no
d     yes no  no  utensils no
我只想计算每个组回答了多少是/否,不包括“name”列,所以我希望输出如下内容

group  yes  no 
a      15   10
b      7    18
cc     20   5
d      1    24 

我应该怎么做呢?

您可以使用
pivot\u longer
将您的宽数据转换为长数据,然后根据组查找计数,然后使用
pivot\u longer

库(tidyverse)
阅读.表格(text=“组q1 q2 q3名称q5
a是的是的不是毯子是的
b没有水是的
cc是否否否食物否
d是否“否”,标题=T)%>%
as_tible()%>%
选择(-name)%%>%
枢轴_更长(-group)%>%
分组依据(分组)%>%
计数(值)%>%
枢轴(名称从=值,值从=n)
#>#tibble:4 x 3
#>#组:组[4]
#>组否是
#>     
#>1A13
#>2 b 3 1
#>3 cc 3 1
#>4D31

在2021-02-04年由(v0.3.0)

在base R中创建,您可以使用
apply

cols <- grep('q\\d+', names(df))
cbind(df[1], t(apply(df[cols], 1, table)))

#  group no yes
#1     a  1   3
#2     b  3   1
#3    cc  3   1
#4     d  3   1

colsA
data.table
选项与
dcast
+
table

dcast(
  setDT(df)[,
    data.table(table(unlist(.SD))),
    group,
    .SDcols = patterns("^q")
  ],
  group ~ V1
)
给予


如果有18列(18个问题?),如何才能得到“是+否”合计为大于18的数字的行?这是一个示例。这并没有真正的帮助。
   group no yes
1:     a  1   3
2:     b  3   1
3:    cc  3   1
4:     d  3   1