我是R.的新手。我有每日数据,并希望将其余数据与平均值小于1的月份分开。对日常数据做一些事情(平均值大于1)。重要的是不要触及月平均值小于1的每日价值。
我使用aggregate(file,as.yearmon,mean)
来获取月平均值,但未能掌握如何使用它来过滤特定月份的每日分析值。任何开始的建议都会非常感激。
我使用了一小部分数据和dput
来重现数据:
structure(list(V1 = c(0, 0, 0, 0.43, 0.24, 0, 1.06, 0, 0, 0, 1.57, 1.26, 1.34, 0, 0, 0, 2.09, 0, 0, 0.24)), .Names = "V1", row.names = c(NA, 20L), class = "data.frame")
我正在使用的一段代码:
library(zoo)
file <- read.table("text.txt")
x_daily <- zooreg(file, start=as.Date("2000-01-01"))
x1_daily <- x_daily[]
con_daily <- subset(x1_daily, aggregate(x1_daily,as.yearmon,mean) > 1 )
答案 0 :(得分:1)
让我们创建一些示例数据:
feb2012 <- data.frame(year=2012, month=2, day=1:28, data=rnorm(28))
feb2013 <- data.frame(year=2013, month=2, day=1:28, data=rnorm(28) + 10)
jul2012 <- data.frame(year=2012, month=7, day=1:31, data=rnorm(31) + 10)
jul2013 <- data.frame(year=2013, month=7, day=1:31, data=rnorm(31) + 10)
d <- rbind(feb2012, feb2013, jul2012, jul2013)
您可以像这样按月获得data
列的汇总:
> a <- aggregate(d$data, list(year=d$year, month=d$month), mean)
> a
year month x
1 2012 2 0.09704817
2 2013 2 9.93354271
3 2012 7 10.19073868
4 2013 7 9.78324133
也许不是最好的方法,但通过相应的年份和月份的平均值来过滤d
数据框的简单方法是使用合并d
和{{的临时数据框架1}},像这样:
a
我希望这会帮助你开始!