gpt4 book ai didi

r - COUNTIF 相当于 dplyr 总结

转载 作者:行者123 更新时间:2023-12-02 05:49:52 24 4
gpt4 key购买 nike

我有一个数据框,列出了参加事件的学生总数 (Stu) 和每组学生人数 (ID) (Sub):

     ID   Stu   Sub
(int) (int) (int)
1 101 80 NA
2 102 130 NA
3 103 10 NA
4 104 210 20
5 105 180 NA
6 106 150 NA

我想知道参与某项事件 (Sub > 0) 或不参与某项事件 (Sub is.na) 的大小范围 (>400、>200、>100、>0) 中的群体数量

output <- structure(list(ID = c(101L, 102L, 103L, 104L, 105L, 106L), 
Stu = c(80L, 130L, 10L, 210L, 180L, 150L),
Sub = c(NA,NA, NA, 20L, NA, NA)),
.Names = c("ID", "Stu", "Sub"),
class = c("tbl_df", "data.frame"),
row.names = c(NA, -6L))

temp <- output %>%
mutate(Stu = ifelse(Stu >= 400, 400,
ifelse(Stu >= 200, 200,
ifelse(Stu >= 100, 100, 0
)))) %>%
group_by(Stu) %>%
summarise(entries = length(!is.na(Sub)),
noentries = length(is.na(Sub)))

结果应该是:

    Stu entries noentries
(dbl) (int) (int)
1 0 0 2
2 100 0 3
3 200 1 0

但我得到:

    Stu entries noentries
(dbl) (int) (int)
1 0 2 2
2 100 3 3
3 200 1 1

如何使summary中的长度函数像countif一样?

最佳答案

summarise 需要一个值,因此使用 sum 而不是 length 来完成这项工作:

output %>% 
mutate(Stu = ifelse(Stu >= 400, 400,
ifelse(Stu >= 200, 200,
ifelse(Stu >= 100, 100, 0
)))) %>%
group_by(Stu) %>%
summarise(entries = sum(!is.na(Sub)),
noentries = sum(is.na(Sub)))

Source: local data frame [3 x 3]

Stu entries noentries
(dbl) (int) (int)
1 0 0 2
2 100 0 3
3 200 1 0

关于r - COUNTIF 相当于 dplyr 总结,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37377819/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com