R 保留重复行中 nas 最少的行

标签 r duplicates filtering dplyr

我有一个包含用户信息的 data.frame,但每个用户 ID 可能有也可能没有重复的行,并且不同变量中存在相当多的缺失数据。 我想做的是删除重复的用户数据,但对于每个用户,我想保留行中包含最少缺失值的行,以保留尽可能多的用户信息。以下是创建演示数据框的代码示例。任何帮助将不胜感激,特别是如果它是通过“dplyr”包完成的。

User_Table <- data.frame(User_ID =rep(c("UserA","UserB","UserC"),each=3),
                     VariableA= rep(c(1,NA,2),each=3),
                     VariableB = rep(c("TypeA","TypeB",NA),each=3),
                     VariableC = rep(c(NA,2,3),each=3))

User_Table[c(1,2,4,5,6,7),3] <- NA

最佳答案

这是一种使用 dplyr 的方法:

User_Table %>%
  arrange(rowSums(is.na(.))) %>%        # sort rows by number of NAs
  distinct(User_ID, .keep_all = TRUE)   # keep first row per User_ID only

结果:

  User_ID VariableA VariableB VariableC
1   UserA         1     TypeA        NA
2   UserC         2      <NA>         3
3   UserB        NA      <NA>         2

关于R 保留重复行中 nas 最少的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38552222/

相关文章:

html - R 中的 cox 回归输出表或图

r - 使用雷达坐标将线段添加到ggplot2中的直方图中

c - 为什么 gcc 为 memcpy 复制 rodata 字符串?如何避免?

matlab - 在 MATLAB 中我应该通过哪些措施来设置我的高斯滤波器的大小?

ExtJs 4.1 TreeGrid 通过列标题过滤

r - 如何在r中的散点图中添加箭头?

r - 在字符串开头之前粘贴

python - SQLAlchemy:如果某些记录和关系数据尚不存在,则插入记录

java - 使用 Java 上的评分框架/应用程序/服务器进行重复数据删除,以与数据库输入分段配合使用

jQuery 比较 Div 内容并删除任何重复数据