如何通过R中的多列计算逻辑值?
我的目标是统计每个人(变量=名称)完成的任务总数。一个人每天只能完成一项任务 我的数据集如下所示:如何通过R中的多列计算逻辑值?,r,dplyr,R,Dplyr,我的目标是统计每个人(变量=名称)完成的任务总数。一个人每天只能完成一项任务 我的数据集如下所示: name task1 task2 task3 day bill TRUE FALSE FALSE 1 bill FALSE TRUE FALSE 2 bill FALSE FALSE FALSE 3 bill NA NA NA 4 alex FALSE FALSE FALSE 1 alex TRUE FALSE FALSE 2 alex FALS
name task1 task2 task3 day
bill TRUE FALSE FALSE 1
bill FALSE TRUE FALSE 2
bill FALSE FALSE FALSE 3
bill NA NA NA 4
alex FALSE FALSE FALSE 1
alex TRUE FALSE FALSE 2
alex FALSE FALSE FALSE 3
alex NA NA NA 4
rob TRUE FALSE FALSE 1
rob TRUE FALSE FALSE 2
rob TRUE FALSE FALSE 3
rob NA NA NA 4
这是我需要的输出:
name total
bill 2
alex 1
rob 3
我的代码:(如您所见,我可以总结任务的数量,但输出与我需要的仍然相去甚远)
total%
分组人(`name`)%>%
总结(task1\u processed=sum(task11,na.rm=TRUE),task2\u processed=sum(task2,na.rm=TRUE),
task3_processed=sum(task3,na.rm=TRUE))
一个选项可以是:
df %>%
group_by(name) %>%
summarise(n = sum(unlist(across(starts_with("task"))), na.rm = TRUE))
name n
* <chr> <int>
1 alex 1
2 bill 2
3 rob 3
对于每个
名称
,您可以将任务
列相加
library(dplyr)
df %>%
group_by(name) %>%
summarise(total = sum(unlist(select(cur_data(), starts_with('task'))), na.rm = TRUE))
# name total
#* <chr> <int>
#1 alex 1
#2 bill 2
#3 rob 3
库(dplyr)
df%>%
分组单位(名称)%>%
总结(总计=总和(未列出(选择(cur_data(),以('task'))开头),na.rm=TRUE))
#姓名总数
#*
#亚历克斯1
#2条例草案2
#3抢3
您可以在所有列中使用c\u来sum
逻辑值:
library(dplyr)
df %>% group_by(name) %>%
summarize(total = sum(c_across(where(is.logical)), na.rm = TRUE)) %>%
ungroup
name total
<chr> <int>
1 alex 1
2 bill 2
3 rob 3
库(dplyr)
df%%>%分组人(姓名)%%>%
汇总(总计=总和(c_跨(其中(is.logical)),na.rm=TRUE))%>%
解组
姓名总数
亚历克斯1
2条例草案2
3抢3
A数据表
选项
setDT(df)[, .(total = sum(na.omit(unlist(.SD)))), name, .SDcols = patterns("^task")]
给予
library(dplyr)
df %>% group_by(name) %>%
summarize(total = sum(c_across(where(is.logical)), na.rm = TRUE)) %>%
ungroup
name total
<chr> <int>
1 alex 1
2 bill 2
3 rob 3
setDT(df)[, .(total = sum(na.omit(unlist(.SD)))), name, .SDcols = patterns("^task")]
name total
1: bill 2
2: alex 1
3: rob 3