R 基于部分复制的数据帧行合并
我有一个数据帧df,其中一些行包含相同的值,但有一行不包含R 基于部分复制的数据帧行合并,r,dataframe,duplicates,R,Dataframe,Duplicates,我有一个数据帧df,其中一些行包含相同的值,但有一行不包含 V1 V2 V3 a b c a b d 1 2 3 1 2 4 我想删除那些包含df$V1和df$V2相同值的行,然后使用“;”作为分隔符组合V3中的值,如下所示: V1 V2 V3 a b c;;d 1 2 3;;4 谢谢 基于tidyverse的解决方案可以如下所示 library(dplyr) librar
V1 V2 V3
a b c
a b d
1 2 3
1 2 4
我想删除那些包含df$V1和df$V2相同值的行,然后使用“;”作为分隔符组合V3中的值,如下所示:
V1 V2 V3
a b c;;d
1 2 3;;4
谢谢 基于tidyverse的解决方案可以如下所示
library(dplyr)
library(stringr)
df %>%
group_by(V1, V2) %>%
mutate(V3 = if_else(n() > 1, str_c(V3, collapse = ';;'), V3[1])) %>%
ungroup() %>%
distinct()
# V1 V2 V3
# <chr> <chr> <chr>
# 1 a b c;;d
# 2 1 2 3;;4
为此,您可以使用聚合函数,并将paste作为聚合函数传递:
aggregate(V3~V1+V2, df, FUN=function(x){paste(x, collapse=';;')})
临时函数定义是将折叠参数指定为您的特殊选择所必需的代码>
aggregate(V3~V1+V2, df, FUN=function(x){paste(x, collapse=';;')})