【发布时间】:2018-11-10 15:16:45
【问题描述】:
library(tidyverse)
df <- tibble(a = as.factor(1:20), b = c(50, 20, 13, rep(2, 10), rep(1, 7)))
如何让 dplyr 查看此数据框 df 并将所有这些出现的 2 折叠到一个求和组中,并将所有出现的 1 折叠到一个求和组中?并且还保留数据框的其余部分。
转动这个:
# A tibble: 20 x 2
a b
<fct> <dbl>
1 1 50
2 2 20
3 3 13
4 4 2
5 5 2
6 6 2
7 7 2
8 8 2
9 9 2
10 10 2
11 11 2
12 12 2
13 13 2
14 14 1
15 15 1
16 16 1
17 17 1
18 18 1
19 19 1
20 20 1
进入这个:
# A tibble: 5 x 2
a b
<fct> <dbl>
1 1 50
2 2 20
3 3 13
4 grp2 20
5 grp1 7
[编辑] - 我修复了示例数据。对此感到抱歉。
【问题讨论】:
-
澄清一下,
grp2和grp1只是字符还是它们包含对应于2和1的a元素? -
感谢您更正我的示例数据。我最初忘记这样做了。感谢您的回复,尽管我并不需要
grp元素来包含a的元素。但反应是有启发性和优秀的。 -
@Julius Vainora 你的答案好像消失了?你介意张贴吗?这很好,我没有机会将它复制粘贴到我的参考文件中。而且我确信 StackOverflow 的其余部分会发现它很有用。不管怎样,谢谢。
-
当然,但是因为它回答了一个不同的问题,所以我就把它留在这里:
df %>% group_by(b) %>% summarise(a = list(a)) %>% mutate(b = b * lengths(a))。