首页 > 解决方案 > 合并重复的列,其中行大于其他列

问题描述

我有数据框列表,并且数据框有一些重复的列。我想合并行大于其他行的重复列(某些数据框有更多重复项)。

示例数据:

temp <- data.frame(seq_len(15), 5, 3)
colnames(temp) <- c("A", "A", "B")

temp$A[5]=NA
temp$A[3]=NA
temp$A[2]=NA
temp[7,2]=NA

  A     A       B
<int> <dbl>   <dbl>
  1     5       3       
  NA    5       3       
  NA    5       3       
  4     5       3       
  NA    5       3       
  6     5       3       
  7     NA      3       
  8     5       3       
  9     5       3       
 10     5       3

最终输出

 A     B
<int> <dbl>
  1     3
  5     3
  5     3
  5     3
  5     3
  6     3
  7     3
  8     3
  9     3   
 10     3

谢谢大家

标签: rdplyrduplicatesdata-manipulation

解决方案


do.call基本的 R 方法是根据列的相似性拆分数据帧,并使用+选择逐行最大值pmax

data.frame(sapply(split.default(temp, names(temp)), function(x) 
           do.call(pmax, c(x, na.rm = TRUE))))

#    A B
#1   5 3
#2   5 3
#3   5 3
#4   5 3
#5   5 3
#6   6 3
#7   7 3
#8   8 3
#9   9 3
#10 10 3
#11 11 3
#12 12 3
#13 13 3
#14 14 3
#15 15 3

推荐阅读