【问题标题】:merging duplicated colums by which row is greater than others合并行大于其他行的重复列
【发布时间】:2020-09-14 00:56:24
【问题描述】:

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

示例数据:

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

谢谢大家

【问题讨论】:

  • A 列的第一个值应该是 5?
  • 重要的情况是 NA 观察,但这太有用了

标签: r dplyr duplicates data-manipulation


【解决方案1】:

基本的 R 方法是根据列的相似性拆分数据帧,并使用 do.call + 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

【讨论】:

  • 感谢大佬的快速回复。我会在早上实现原始数据集,如果有问题我会回复。
猜你喜欢
  • 1970-01-01
  • 2019-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多