对两列值进行排序​按R中的日期

  • 本文关键字:排序 日期 两列 r
  • 更新时间 :
  • 英文 :


我有一个数据帧,其中有两列的名称为

df1 <- structure(list(Col1 = c("Luis", "Pedro", "John", "Ingrid"), 
Col2 = c("Raul", "Maria", "Chris", "Lia")), 
class = "data.frame", row.names = c(NA, -4L))

我还有一个,每个名字对应的日期:

df2 <- structure(list(Name = c("Luis", "Pedro", "John", "Ingrid","Raul", "Maria", "Chris", "Lia"),
Date = c("10/05/22","04/05/22", "03/05/22", "07/05/22","01/05/22","06/05/22", "05/05/22","02/05/22")), 
class = "data.frame", row.names = c(NA, -8L))

它看起来像这样:

df1:

Col1  Col2
1   Luis  Raul
2  Pedro Maria
3   John Chris
4 Ingrid   Lia

df2:

Name     Date
1   Luis 10/05/22
2  Pedro 04/05/22
3   John 03/05/22
4 Ingrid 07/05/22
5   Raul 01/05/22
6  Maria 06/05/22
7  Chris 05/05/22
8    Lia 02/05/22

我想要的是,在每一行中,第一列中出现日期第一的名称,第二列中显示日期较晚的名称,我给出了一个我期望的结果示例:

Col1  Col2
1   Raul  Luis
2  Pedro Maria
3   John Chris
4    Lia Ingrid

我们将"Date"转换为Date类并执行ordering

df2$Date <- as.Date(df2$Date, "%d/%m/%y")
df2new <- df2[order(df2$Date),]
df1[] <-  t(apply(df1, 1, function(x) x[order(match(x, df2new$Name))]))

-输出

> df1
Col1   Col2
1  Raul   Luis
2 Pedro  Maria
3  John  Chris
4   Lia Ingrid

最新更新