这可能是一个已经被问过的非常简单的问题,但是..
我有一个数据框,它是从 excel 中生成的 CSV 文件构建的。观察结果不是均匀采样的,即它们是针对电力使用的“高峰”时间。这意味着他们每年排除不同的日子。我有 20 年的数据(1993-2012)并且正在运行 non Robust 和 Robust LOESS 以提取季节性和线性趋势。
分解完成后,我只想关注 6 月到 9 月的观察结果。
如何创建仅包含这些结果的新数据框?
对格式也很抱歉。
Date MaxLoad TMAX
1 1993-01-02 2321 118.6667
2 1993-01-04 2692 148.0000
3 1993-01-05 2539 176.0000
4 1993-01-06 2545 172.3333
5 1993-01-07 2517 177.6667
6 1993-01-08 2438 157.3333
7 1993-01-09 2302 152.0000
8 1993-01-11 2553 144.3333
9 1993-01-12 2666 146.3333
10 1993-01-13 2472 177.6667
最佳答案
正如 Joran 所指出的,除了基本 R 之外,您不需要任何其他东西:
## Reproducible data
df <-
data.frame(Date = seq(as.Date("2009-03-15"), as.Date("2011-03-15"), by="month"),
MaxLoad = floor(runif(25,2000,3000)), TMAX=runif(25,100,200))
## One option
df[months(df$Date) %in% month.name[6:9],]
# Date MaxLoad TMAX
# 4 2009-06-15 2160 188.4607
# 5 2009-07-15 2151 164.3946
# 6 2009-08-15 2694 110.4399
# 7 2009-09-15 2460 150.4076
# 16 2010-06-15 2638 178.8341
# 17 2010-07-15 2246 131.3283
# 18 2010-08-15 2483 112.2635
# 19 2010-09-15 2174 160.9724
## Another option: strftime() will be more _generally_ useful than months()
df[as.numeric(strftime(df$Date, "%m")) %in% 6:9,]
关于r - 如果每年的日子不一样,我如何专门针对某些月份进行过滤?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21834444/