【发布时间】:2019-08-02 19:38:39
【问题描述】:
我在 r 中创建了一个函数,它通过过滤每年进行一些计算。现在我想从每年中过滤掉 6 个月。例如,2014 将分为两个数据帧 20140101-201406 和 20140701-20141201。
我尝试在过滤器命令中使用逻辑运算符,但它不断给我错误作为意外符号。
func2 <- function(years, data) {
years <- c(2014, 2015, 2016, 2017, 2018, 2019)
listofdfs <- list()
efor(i in 1:length(years)) {
#d <- data[data$Year == years[i]]
d <- filter(data, (data$Year==years[i]))
df <- data.frame(d)[, c(4,5)]
names(df) <- unlist(d[1, "headers"])
names(df)[1:2] <- c("Actual", "Estimated")
listofdfs[[i]] <- df
}
return(listofdfs)
}
预计应该给我每个月有 6 行的数据框,但它给出的是全年
编辑:
这是我累的:
func2 <- function(years, data) {
years <- c(20140101, 20140601, 20140701,20141201, 20150101, 20150601, 20150701, 20151201, 20160101,20191201)
listofdfs <- list() for(i in 1:length(years)) { #d <- data[data$Year == years[i]]
d <- filter(data, (years[i]==data$Year || years[i]<data$Year) | data$Year==inc(years)[i] || data$Year<inc(years[i]))
df <- data.frame(d)[, c(4,5)]
names(df) <- unlist(d[1, "headers"])
}
【问题讨论】:
-
func2
-
您可以发布示例数据吗?请使用
dput(data)的输出编辑问题。或者,如果dput(head(data, 20))的输出太大。另外,inc(years[i])是什么?代码示例中未定义函数inc()。