首页 > 解决方案 > 合并可能是或可能不是同一个人的行(带有字符数据)

问题描述

因此,我有两个数据集,其中一个具有值 ID,并说变量 a、b 和 c;其他的 alo 有 ID,但有变量 c、d、e。这两个数据集有共同的个体,但不是全部。我尝试了 dyplr::left 连接,但它从第二个数据集中删除了与第一个数据集不匹配的行。所以我刚刚在两个数据集中创建并排序了列,这样我就可以做一个 rbind。问题是我现在有这样的东西(虚构数据的例子):

  index  b  c  d
1     A  B  A  A
2     B NA  C  D
3     B  B NA NA
4     C  D  E  C
5     D  D  D  D
6     E NA  E NA
7     E NA NA  F
8     E  G NA NA
9     F  F  F  F

我想拥有:

  index  b  c  d
1     A  B  A  A
2     B  B  C  D
3     C  D  E  C
4     D  D  D  D
5     E  G  E  F
6     F  F  F  F 

显然, Push up and tight Dataframe中也提出了类似的问题。一般解决方案,但它是数字,sum 函数在我的情况下不起作用。我已经尝试用 paste 和 paste0 替换它,但它不起作用。我还尝试了此Merge rows in one data.frame (setDT+ lapply) 中的第二个解决方案,它适用于该示例,但我有“eval 错误(bysub,x,parent.frame()):找不到对象'A'”在真实数据集中。

第一条评论中提出的 dplyr解决方案df1 %>% group_by(index) %>% summarise_all(na.omit)也适用于示例,但不适用于真实数据,因为错误:“summarise_impl(.data, dots) 中的错误:列 Nom 的长度必须为 1(汇总值),而不是 2 ",其中 "Nom" 是索引后的第一列,该索引由多个带有空格和标点符号的单词组成的字符串组成。执行length(Nom)输出行数。

提前致谢

标签: rmergecharacter

解决方案


推荐阅读