【发布时间】:2016-05-22 22:25:26
【问题描述】:
我想编写一个函数,使用 dplyr::filter() 函数将我的数据子集为 10 年时间片。我的函数如下,但这似乎只返回第二次调用filter()的值。
如何编写一个函数,将数据分成多个时间段,然后汇总数据?
示例数据
aggr.data <- dput(head(aggr.data))
structure(list(time = c(2020, 2020, 2020, 2020, 2020, 2020),
dayofyr = 1:6, NPP = c(0, 0, 0, 0, 0, 0),
soc = c(2582.0408, 2582.3461, 2582.7023, 2582.9979, 2583.1896, 2583.4067)),
.Names = c("time", "dayofyr", "NPP", "soc"),
row.names = c(NA, 6L), class = "data.frame")
在这里,我尝试过滤 2020 年至 2029 年,然后是 2030 年至 2039 年的时间段。然后我希望能够按这些“子集”聚合数据。
功能
testFunction <- function(x) {
time2020 <- filter(x, time >= 2020, time <= 2029.92);
time2040 <- filter(x, time>= 2030, time <= 2039.92);
test1 <- summarise(time2020, mean.soc = mean(soc), mean.npp = sum(NPP/20));
test2 <- summarise(time2040, mean.soc = mean(soc), mean.npp = sum(NPP/20))
}
对数据运行函数
testFunction(aggr.data)
【问题讨论】:
-
函数返回的内容有问题吗?您是否在函数的最后一行尝试了
list('test1' = test1, 'test2' = test2)?此外,您可能需要指定dplyr::filter()。 -
啊,是的!我不知道列表..
标签: r function filter dplyr subset