簡體   English   中英

根據年份和月份對數據框進行子集化

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM