簡體   English   中英

r與年和月的日期相交

[英]r intersect of date in with year and month

我想根據日期列找到兩個數據框的交集。

以前,我一直使用此命令來查找年日期列的相交(其中日期僅包含年份)

common_rows <-as.Date(intersect(df1$Date, df2$Date), origin = "1970-01-01")

但是現在我的df1的日期列的類型為date,看起來像這樣:

1985-01-01
1985-04-01
1985-07-01
1985-10-01

我的df2的日期列也為date類型,看起來像這樣(注意日期不同)

1985-01-05
1985-04-03
1985-07-07
1985-10-01

當我保持這樣的格式(即年,月和日)時,上面的命令可以正常工作,但是由於我的日子不同,並且我對每月交集感興趣,所以我放棄了這樣的日子,但是當我尋找時,這會產生錯誤十字路口:

df1$Date <- format(as.Date(df1$Date), "%Y-%m")
common_rows <-as.Date(intersect(df1$Date, df2$Date), origin = "1970-01-01")
Error in charToDate(x) : 
character string is not in a standard unambiguous format

有沒有一種方法可以根據年份和月份查找兩個數據集的交集,而忽略日期?

問題是as.Date()函數包裝了最終輸出。 我不知道您是否可以將不完整的日期轉換為日期對象。 如果您適合使用簡單的字符串,請使用common_rows <-intersect(df1$Date, df2$Date) 否則,請嘗試:

common_rows <-as.Date(paste(intersect(df1$Date, df2$Date),'-01',sep = ''), origin = "1970-01-01")

嘗試這個:

date1 <- c('1985-01-01','1985-04-01','1985-07-01','1985-10-01')
date2 <- c('1985-01-05','1985-04-03','1985-07-07','1985-10-01')

# extract the part without date
date1 <- sapply(date1, function(j) substr(j, 1, 7))
date2 <- sapply(date2, function(j) substr(j, 1, 7))

print(intersect(date1, date2))
[1] "1985-01" "1985-04" "1985-07" "1985-10"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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