如何合并数据框中的行并在单元格中合并因子值

问题描述 投票:0回答:2

我在R中有一个数据框,我想在其中合并某些行并合并这些行中某些单元格的值。想象以下数据框:

Col.1<-c("a","b","b","a","c","c","c","d") Col.2<-c("mouse", "cat", "dog", "bird", "giraffe", "elephant", "zebra", "worm") df<-data.frame(Col.1, Col.2) df

Col.1 Col.2 a mouse b cat b dog a bird c giraffe c elephant c zebra d worm

我想合并Col.1中的值相同的所有相邻行,并相应地合并Col.2中的值。

最终结果应如下所示:

Col.1 Col.2 a mouse b cat dog a bird c giraffe elephant zebra d worm

我曾尝试使用dplyr解(例如:ddply(df, .(Col.1), summarize, Col.2 = sum(Col.2))),但sum-command不适用于因子值。

r dataframe merge rows combine
2个回答
0
投票

我们可以通过粘贴进行分组。要对相邻的相似元素进行分组,可以使用rleid中的data.table,然后通过summarise ing paste中'Col.2'的值>

library(dplyr)
library(data.table)
library(stringr)
df %>%
    group_by(Col.1, grp = rleid(Col.1)) %>% 
    summarise(Col.2 = str_c(Col.2, collapse=' ')) %>%
    ungroup %>%
    select(-grp)
# A tibble: 5 x 2
#  Col.1 Col.2                 
#  <fct> <chr>                 
#1 a     mouse                 
#2 a     bird                  
#3 b     cat dog               
#4 c     giraffe elephant zebra
#5 d     worm         

0
投票

此人被要求输入few times。请注意,sum仅保留用于数值。您可以使用paste(确保指定collapse参数)来连接字符串。

© www.soinside.com 2019 - 2024. All rights reserved.