首页 > 解决方案 > 将分组变量的第一个值和最后一个值粘贴在一起

问题描述

我有一个看起来像这样的df:

group sequence link 
90      1      11|S1
90      2      10|S1
90      3      12|10
91      1      9|10
91      2      13|9
93      1      15|20
...

如何将link每个组中变量的第一个和最后一个值存储为新变量?期望的输出是:

group sequence link  Key
90      1      11|S1 11|S1, 12|10
90      2      10|S1 11|S1, 12|10
90      3      12|10 11|S1, 12|10
91      1      9|10  9|10, 13|9
91      2      13|9 9|10,13|9
93      1      15|20 
....

标签: rdataframedata.tabletidyverse

解决方案


你可以这样做:

library(dplyr)

df %>%
  group_by(group) %>%
  mutate(
    Key = paste(link[1], link[n()], sep = ", ")
  )

虽然这与您想要的输出不匹配。在您的示例数据框中,您有例如91只有 1 个值的组。上面的代码会9|10反复给你作为开始和结束。

如果您只想在这种情况下显示一个值,您可以执行以下操作:

df %>%
  group_by(group) %>%
  mutate(
    Key = case_when(
      n() > 1 ~ paste(link[1], link[n()], sep = ", "), 
      TRUE ~ as.character(link)
      )
  )

推荐阅读