【问题标题】:de-duplicate rows and align columns in R删除重复行并对齐 R 中的列
【发布时间】:2023-02-15 22:59:28
【问题描述】:
我有一个数据框,其中有重复的样本,但原因是每行只出现变量:
| Sample |
Var1 |
Var2 |
| A |
1 |
NA |
| B |
NA |
1 |
| A |
NA |
3 |
| C |
NA |
2 |
| C |
5 |
NA |
| B |
4 |
NA |
我想以行名称去重复和相应的列值并排结束:
| Sample |
Var1 |
Var2 |
| A |
1 |
3 |
| B |
4 |
1 |
| C |
5 |
2 |
我试过 group_by() 函数,但失败得很惨!
我将非常感谢任何帮助,如果需要,我很乐意进一步澄清任何事情!
【问题讨论】:
标签:
r
duplicates
metadata
data-manipulation
【解决方案1】:
data.table方法
library(data.table)
DT <- fread("Sample Var1 Var2
A 1 NA
B NA 1
A NA 3
C NA 2
C 5 NA
B 4 NA")
# or setDT(DT) if DT is not a data.table format
# melt to long format, and remove NA's
DT.melt <- melt(DT, id.vars = "Sample", na.rm = TRUE)
# cast to wide again
dcast(DT.melt, Sample ~ variable, fill = NA)
# Sample Var1 Var2
# 1: A 1 3
# 2: B 4 1
# 3: C 5 2
【解决方案2】:
我们可以使用group_by 和summarise 来完成这个任务。获取 max() 将为我们提供所需的输出:
library(dplyr)
df %>%
group_by(Sample) %>%
summarise(across(, ~max(., na.rm=TRUE)))
Sample Var1 Var2
<chr> <int> <int>
1 A 1 3
2 B 4 1
3 C 5 2