我有一個數據幀列出總的學生(STU)與學生每組(ID)誰正在參與的活動(子)的數目:COUNTIF等效在dplyr總結
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
我想知道組的大小帶(> 400,> 200,> 100,> 0)的數量誰不是參與一種活動(子> 0),或不(子is.na)
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
我怎樣才能使長度功能在總結起來就像COUNTIF?
某事錯在你最後ifel se –
對不起,錯過了0,現在應該工作 – pluke
'sum'是正確的解決方案,如下所述。爲了清楚起見,長度返回它提供的向量的長度。在這種情況下,無論真/假值如何,長度函數都會返回每個組中的項目數。 – Gopala