我正在操作包含dplyr
sta
列和另一列years
的表格。第二列可能包含 1或更多值。
我使用了 group_by()
,现在希望在sta
上汇总,为{{1}的每个唯一值合并years
列},仅保留sta
列表中的唯一值 。
示例数据:
之前:
years
后:
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)
这个问题看起来非常简单,但我似乎无法确定适当的语法来处理这种类型的行崩溃。
任何见解都将受到赞赏。
答案 0 :(得分:2)
您可以使用tidyr的unnest
和nest
操作执行此操作。要仅保留唯一年份,您可以在其间添加distinct
步骤。
library(tidyr)
example %>%
unnest(years) %>%
distinct(sta, years) %>%
nest(years)
如果您不想使用tidyr,则可以使用group_by
和do
,do
步骤执行连接和独特步骤:
example %>%
group_by(sta) %>%
do(years = unique(unlist(.$years))) %>%
ungroup()
(最后ungroup
步骤是防止它成为按行分组的数据框。)