r - 合并重复的列,其中行大于其他列
问题描述
我有数据框列表,并且数据框有一些重复的列。我想合并行大于其他行的重复列(某些数据框有更多重复项)。
示例数据:
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
谢谢大家
解决方案
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
推荐阅读
- javascript - 如何获取 puppeteer 中嵌套元素内的元素计数
- python - 从 GitHub Actions 中的 conda 环境运行时找不到 pytest
- c# - Microsoft.Azure.Management.Consumption .NET 包和 ApiVersion
- spring - 差异包中的 Bean 给出错误“没有可用类型的限定 Bean”
- python - rqt_image_view 作为 opencv 中的输入
- node.js - Mongoose 多个依赖查询
- gcc - 如何在 ubuntu 20 中安装旧版本的 gcc -3 或 gcc-4
- c# - 在 C# 中将结构指针作为参数传递
- python - 需要帮助理解一行代码如何使用最大 y 坐标在 python 中找到对应的 X 值
- android - 在AndroidQ中重新安装应用程序后,我们是否需要获得权限才能获取应用程序自行创建的所有文件?