【发布时间】:2017-06-10 17:44:42
【问题描述】:
例如,我有这个数据框(df):
Color X1 X2 X3 X4
Red 1 1 0 2
Blue 0 NA 4 1
Red 3 4 3 1
Green 2 2 1 0
我想创建一个函数,按组(即按“颜色”)计算“X2”中非NAs 的数量。我想在一个名为 newdf 的新数据框中输出这个函数。这就是我想要的输出:
Color X2
Red 2
Blue NA
Green 1
到目前为止,我有这个代码:
Question <- function(Color){
Result <-
rowsum((df[c("X2")] > 0) + 0, df[["X2"]], na.rm = TRUE)
rowSums(Result)[[Color]]
}
Question("Red")
这个函数给出的输出只是Question("Red")= 2,我想在一个新的数据框(newdf)中获得所有颜色的结果。有人能帮忙吗?谢谢!
【问题讨论】:
-
你也可以有一个命名向量
tapply(ifelse(is.na(df$X2), NA, 1), df$Color, FUN=sum) -
使用
rowsum:rowsum(as.numeric(!is.na(dt$X2)), dt$Color)