[英]to subset a dataframe based on year and month
我想將我的數據框從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", ]
但是我也需要從月份中提取子集。 任何幫助都會很棒
試試這個選項:
df <- df[(df$Year == 2017 & df$Month >= 9) |
(df$Year == 2018 & df$Month <= 4), ]
順便說一句,您可能要考慮將日期存儲為適當的日期類型,包括日期部分。
如果將三個日期分量編碼在一個“ 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'), ]
這是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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.