首页 > 解决方案 > 在 Tidyverse 中连接 Row[-1,-3]

问题描述

我是 Tidyverse 和 dplyr 的新手,希望能就如何最好地连接当前行下方的行中的数据获得一些指导。例如,在下面的数据框中,我想使用 Grade 列中的数据来创建 Prior3Grades 列中的数据。2019 年 1 月 2 日的 Prior3Grades 数据将通过连接 12/3/18、11/3/18 和 10/4/18 的成绩来创建。

这可以使用 mutate 或其他方式在 dplyr 中实现吗?这也是 dplyr 的驾驶室还是更适合 sql 的东西。

在此处输入图像描述

标签: rdplyrtidyverse

解决方案


使用一些基本包tidyverse

library(dplyr)
library(tidyr)
library(tibble)

df <- tibble(
  Name = "Bob",
  TestDate = seq(as.Date("2019-02-01"), as.Date("2019-05-08"), length.out = 6), ## some random dates
  Grade = c("A", "A", "B", "C", "D", "A")
)


df %>% 
  group_by(Name) %>% 
  mutate(
    grade1 = lead(Grade),
    grade2 = lead(Grade, 2),
    grade3 = lead(Grade, 3)
  ) %>% 
  replace_na(list(grade1 = "", grade2 = "", grade3 = "")) %>% 
  mutate(
    Prior3Grades = paste0(grade1, grade2, grade3)
  )

推荐阅读