代码之家  ›  专栏  ›  技术社区  ›  SecretIndividual

使用dplyr基于其他数据帧添加新列

  •  -1
  • SecretIndividual  · 技术社区  · 6 年前

    我得到了两个数据帧:

    enter image description here

    现在,我想向第一个数据帧添加一个新字段,该字段包含第二个数据帧的结果列,但是 只有 该行中每个日期最低的人的结果。

    因此,生成的数据帧应该如下所示:

    enter image description here

    有可能在dplyr中这样做吗 mutate() R中的函数或任何其他方式?我试着研究如何解决这个问题,但我似乎想不出来。希望你们都知道。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Ronak Shah    6 年前

    我们可以选择最小值为的行 Date 每人 name left_join 具有 df1 .

    library(dplyr)
    df1 %>%
      left_join(df2 %>%
                  group_by(Name) %>%
                  slice(which.min(Date)), by = 'Name')
    
        2
  •  0
  •   akrun    6 年前

    具有 data.table ,我们可以加入

    library(data.table)
    setDT(df1)[df2, Result := Result[which.min(Date)],on = .(Name), by = .EACHI]
    df1
    #   Name Age Country Result
    #1: Jack  45      NL      5
    #2: Lisa  43     USA     NA
    #3:  Ben  12       D      9
    

    数据

    df1 <- data.frame(Name = c("Jack", "Lisa","Ben"), Age = c(45, 43, 12), 
        Country = c("NL", "USA", "D"))
    df2 <- data.frame(Name = c("Jack", "Jack", "Ben"), Result = c(6, 5, 9),
         Date = as.Date(c("2002-06-09", "2001-07-23", "2001-07-23")))