我有一个简单的数据框,包含3列:name,goal和actual。
因为这只是一个更大的数据框的简化版本,所以我想使用dplyr来计算每个人实现目标的次数。
当我运行上面的代码时,我看到了3个这样的错误:
警告信息: 1:在if(x == y){:中 条件长度大于1,只有第一个元素将被使用。
df <- data.frame(name = c(rep('Fred', 3), rep('Sally', 4)),
goal = c(4,6,5,7,3,8,5), actual=c(4,5,5,3,3,6,4))
结果应该是这样的:
我应该能够传递一个类似下面所示的匿名函数,但是语法还不太正确:
library(dplyr)
g <- group_by(df, name)
summ <- summarise(g, met_goal = sum((function(x,y) {
if(x>y){return(0)}
else{return(1)}
})(goal, actual)
)
)
当我运行上面的代码时,我看到了3个这样的错误:
警告信息: 1:在if(x == y){:中 条件长度大于1,只有第一个元素将被使用。
if()
语句让你感到困惑。例如,sum((function(x, y) x <= y)(goal, actual))
就可以运行。 - Rich Scriven