本文介绍了如何将数据框中的多个值(与其他两个变量之间的关系为1的多个关系)优雅地转换为单个行?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
数据:
names real_name type
a A AA
aa A AA
a- A AA
b B BB
bbb B BB
...
想要的结果:
names real_name type
{a, aa, a-} A AA
{b, bbb} B BB
我想摆脱冗余并能够遍历名称。我几乎设法通过循环和 tidyr
达到了想要的结果。
获得此功能的优雅方法是什么?
I want to get rid of the redundancy and be able to traverse through names. I have almost managed to get to the wanted results with loops and tidyr
.What is the elegant way to get this?
推荐答案
df <- tibble(names = c("a", "aa", "a-", "b", "bbb"),
real_name = c(rep("A", 3), rep("B", 2)),
type = c(rep("AA", 3), rep("BB", 2)))
如果想要列表列表,可以尝试巢
You can try nest
if you want a list-col
df %>% nest(names)
# A tibble: 2 x 3
real_name type data
<chr> <chr> <list>
1 A AA <tibble [3 x 1]>
2 B BB <tibble [2 x 1]>
或者总结
并带有所有名称:
df %>% group_by(real_name, type) %>% summarize(x = paste(names, collapse = ", "))
# A tibble: 2 x 3
# Groups: real_name [?]
real_name type x
<chr> <chr> <chr>
1 A AA a, aa, a-
2 B BB b, bbb
这篇关于如何将数据框中的多个值(与其他两个变量之间的关系为1的多个关系)优雅地转换为单个行?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!