我想合并行,删除dups,但保留uniques。我可以做前两个,但不能做第二个。我有一个名为subject的df,它看起来像这样:
unique_id subject grade
1 Math 88
1 English 78
1 History 98
2 Math 65
2 English 72
2 History 84这段代码
combined <- distinct(subject, unique_id, .keep_all = TRUE)给我这个输出:
unique_id subject grade
1 Math 88
2 Math 65我想让它看起来像这样:
unique_id subject grade
1 Math, English, History 88, 78, 98
2 Math, English, History 65, 72, 84下面的解决方案非常有效!这是这个问题的另一个问题。
如果我有这样的数据集:
unique_id school subject grade sex
1 great Math 88
1 great English 78
1 great History 98 male
2 spring Math 65
2 spring English 72 female
2 spring History 84 并运行以下代码:
(r2 <- df %>%
group_by(unique_id) %>%
summarise_each(funs(toString(unique(.)))))我得到以下输出:
unique_id school subject grade sex
1 great Math, English, History 88,78,98 , male
2 spring English, English, History 65,72,84 , female是否有一种方法可以将空单元格合并,去掉性别类别中的逗号,所以它可以如下所示:
unique_id school subject grade sex
1 great Math, English, History 88,78,98 male
2 spring English, English, History 65,72,84 female谢谢!
发布于 2016-07-24 04:01:02
我们可以通过粘贴(toString是paste(., collapse=", ")的包装器)来实现这一点,在按'unique_id‘分组后,每个列的唯一元素在一起。
library(dplyr)
(r1 <- df %>%
group_by(unique_id) %>%
summarise_each(funs(toString(unique(.)))))
# unique_id subject grade
# <int> <chr> <chr>
#1 1 Math, English, History 88, 78, 98
#2 2 Math, English, History 65, 72, 84或者我们可以将其保存为list,然后提取list元素。
r2 <- df %>%
group_by(unique_id) %>%
summarise_each(funs(list(unique(.))))从'r2',我们可以unnest (从tidyr),如果我们需要
library(tidyr)
r2 %>%
unnest()如果我们在distinct中使用OP的方式,我们可以从summarise_each中删除unique。
df %>%
distinct(subject, unique_id, .keep_all=TRUE) %>%
group_by(unique_id) %>%
summarise_each(funs(toString(.)))https://stackoverflow.com/questions/38548613
复制相似问题