use*_*407 6 aggregate r duplicates
我有一个如下所示的数据框:
Chr start stop ref alt Hom/het ID
chr1 5179574 5183384 ref Del Het 719
chr1 5179574 5184738 ref Del Het 915
chr1 5179574 5184738 ref Del Het 951
chr1 5336806 5358384 ref Del Het 376
chr1 5347979 5358384 ref Del Het 228
Run Code Online (Sandbox Code Playgroud)
我想合并任何重复的行,组合最后一个ID列,以便所有ID都在一行/列中,如下所示:
Chr start stop ref alt Hom/het ID
chr1 5179574 5183384 ref Del Het 719
chr1 5179574 5184738 ref Del Het 915, 951
chr1 5336806 5358384 ref Del Het 376
chr1 5347979 5358384 ref Del Het 228
Run Code Online (Sandbox Code Playgroud)
我找到了删除重复项和汇总列的人的示例,但我只是想将所有ID与列中的重复区域组合在一个列中.
有人打电话aggregate()应该做的伎俩.
这是一个收集列表对象中ID的选项:
(df1 <- aggregate(df[7], df[-7], unique))
# Chr start stop ref alt Hom.het ID
# 1 chr1 5179574 5183384 ref Del Het 719
# 2 chr1 5179574 5184738 ref Del Het 915, 951
# 3 chr1 5336806 5358384 ref Del Het 376
# 4 chr1 5347979 5358384 ref Del Het 228
Run Code Online (Sandbox Code Playgroud)
这是一个在角色向量中收集它们的人:
df2 <- aggregate(df[7], df[-7],
FUN = function(X) paste(unique(X), collapse=", "))
Run Code Online (Sandbox Code Playgroud)
比较两个选项的结果:
str(df1$ID)
# List of 4
# $ 0: int 719
# $ 3: int [1:2] 915 951
# $ 7: int 376
# $ 8: int 228
str(df2$ID)
# chr [1:4] "719" "915, 951" "376" "228"
Run Code Online (Sandbox Code Playgroud)