我想对2017年9月至2018年4月的数据框进行分组。我的数据框如下:-
Year Month Day Avg_Temp
2017 8 31 20
2017 9 1 22
.
.
.
2018 4 30 26
2018 5 1 30
我希望我的数据集从2017年9月1日到2018年4月30日。
Year Month Day Avg_Temp
2017 9 1 22
.
.
.
2018 4 30 26
仅基于我要做子集的年份。
df <-df[df$YEAR>="2017" & df$YEAR<="2018", ]
但是我也需要从月份中提取子集。任何帮助都很好
答案 0 :(得分:1)
尝试此选项:
df <- df[(df$Year == 2017 & df$Month >= 9) |
(df$Year == 2018 & df$Month <= 4), ]
顺便说一句,您可能需要考虑将日期存储为适当的日期类型,包括日期部分。
答案 1 :(得分:0)
如果将三个日期分量编码在一个Date
列中,可能会更容易:
df$Date <- as.Date(paste(df$Year, df$Month, df$Date, sep = '-'))
df$Year <- NULL
df$Month <- NULL
df <- df[df$Date > as.Date('2017-09-01') & df$Date < as.Date('2018-04-01'), ]
答案 2 :(得分:0)
这是一种dplyr
的方法:
require(tidyverse)
df<-data.frame(Year=c(2018,2017,2017,2017,2018,2018,2018),
Month=c(9,8,10,4,9,3,4),Day=c(13,12,14,15,17,15,14))
df %>%
filter(Year==2017&Month>=9|Year==2018&Month<=4)
哪个产生:
Year Month Day
1 2017 9 14
2 2018 3 15
3 2018 4 14