dplyr:当列包含类型列表时合并行

时间:2016-01-27 02:22:46

标签: r dplyr

我正在操作包含dplyr sta列和另一列years的表格。第二列可能包含 1或更多值。

我使用了 group_by() ,现在希望在sta上汇总,为{{1}的每个唯一值合并years列},仅保留sta列表中的唯一值

  

示例数据:

     

之前:

years
     

Example Table

           

后:

example <- data.frame(sta = c("AAE", "ADK", "ADK", "ADK"))
example$years <- list(c(1994, 1995, 1996, 1997),
                      c(1993, 1994, 1995),
                      c(1995, 1996, 1997, 1998, 1999), 
                      2015)
     

Example Result

这个问题看起来非常简单,但我似乎无法确定适当的语法来处理这种类型的行崩溃。

任何见解都将受到赞赏。

1 个答案:

答案 0 :(得分:2)

您可以使用tidyr的unnestnest操作执行此操作。要仅保留唯一年份,您可以在其间添加distinct步骤。

library(tidyr)
example %>%
  unnest(years) %>%
  distinct(sta, years) %>%
  nest(years)

如果您不想使用tidyr,则可以使用group_bydodo步骤执行连接和独特步骤:

example %>%
  group_by(sta) %>%
  do(years = unique(unlist(.$years))) %>%
  ungroup()

(最后ungroup步骤是防止它成为按行分组的数据框。)