如何更改函数内部调用的函数(sum())的选项(by()),而不在R中给sum()一个特定的参数

时间:2015-11-06 10:32:57

标签: r

我认为这是一个简单的语法问题,但它弄乱了我的大脑:

data <- data.frame(y=c(1,1,0,NA,1,1),
                   iso3=c(rep("USA",3),rep("RUS",3)),
                   year=rep(1999:2001,2))

我只是想逐年总结一下:

summarized <- by(data$y,data$year,sum)

但不会像上面那样在1999年丢失信息。我认为这可以通过使用sum(,na.rm = TRUE)来完成,但如果我在上面的代码中尝试这样做,sum想要一个参数。如何更改sum的规范并仍然在by内使用它作为应用于by参数的函数?我非常感谢任何提示或如何使用!

p.s。:虽然我对任何解决方案表示感谢,但如果你能给我一个特定于“包装函数”的解决方案,那就太棒了。上面的问题,因为它不是我第一次遇到这个问题,我想理解它。

1 个答案:

答案 0 :(得分:3)

尝试

by(data$y,data$year,sum, na.rm=TRUE)

如果我们使用dplyr

library(dplyr)
data %>%
     group_by(year) %>% 
     summarise(Sum= sum(y, na.rm=TRUE))