我必须比较来自两个具有共同 ID 的不同 df 的一些日期。让我在这里提供一个有效的例子:
df1
ID MONTH YEAR
1 1 1997
2 7 2004
3 6 2017
4 8 2003
5 11 1990
6 3 1999
df2
ID MONTH YEAR
1 4 2003
1 8 2006
3 12 2000
4 4 2015
5 1 1993
6 1 1991
正如我们所看到的,我们得到了两个数据框,其中有共同的 ID 列,而列 MONTH 和 YEAR 标识了一个精确的日期。现在我必须将 df2 的每一行与 df1 进行比较,并且作为输出让我知道日期是在 df1 中的相同 ID 之前还是之后。这应该是示例输出:
df3
ID STATUS
1 After
1 After
2 None
3 Before
4 After
5 After
6 Before
我希望我解释得很好,
非常感谢,安德里亚。
你可以使用as.yearmon
from zoo 包的组合来做到这一点,merge
和ifelse
library(zoo)
df1$date1 <- as.yearmon(with(df1, paste0(YEAR, "-",MONTH))) #setting date in df1
df2$date2 <- as.yearmon(with(df2, paste0(YEAR, "-",MONTH)))#setting date in df2
tmp <- merge(df1, df2, by="ID", all = TRUE) # combining both data.frames
tmp$STATUS <- ifelse(is.na(tmp$date1)|is.na(tmp$date2), "None",
ifelse(tmp$date1 > tmp$date2, "Before", "After")) # doing logical comparison
df3 <- tmp[, c("ID", "STATUS")] # building desired data.frame
df3
ID STATUS
1 1 After
2 1 After
3 2 None
4 3 Before
5 4 After
6 5 After
7 6 Before
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句