所以我有一个像这样的tibble(数据帧)(实际的数据帧就像100多行)
sample_ID <- c(1, 2, 2, 3)
A <- c(NA, NA, 1, 3)
B <- c(1, 2, NA, 1)
C <- c(5, 1, NA, 2)
D <- c(NA, NA, 3, 1)
tibble(sample_ID,A,B,C,D)
# which reads
# A tibble: 4 × 5
sample_ID A B C D
<dbl> <dbl> <dbl> <dbl> <dbl>
1 1 NA 1 5 NA
2 2 NA 2 1 NA
3 2 1 NA NA 3
4 3 3 1 2 1
从这里可以看出,第二行和第三行具有相同的样本ID。我希望将这两行组合起来,使得tibble看起来像
# A tibble: 3 × 5
sample_ID A B C D
<dbl> <dbl> <dbl> <dbl> <dbl>
1 1 NA 1 5 NA
2 2 1 2 1 3
3 3 3 1 2 1
换句话说,我希望sample_ID的行是唯一的(顺序并不重要),并且合并其他列的值(在可能的情况下覆盖NA)。这可以通过简单的方式实现,例如使用聚集和传播吗?非常感谢。
答案 0 :(得分:1)
我们可以在按&#39; sample_ID&#39;
分组后使用summarise_each
library(dplyr)
df %>%
group_by(sample_ID) %>%
summarise_each(funs(na.omit))
# A tibble: 3 × 5
# sample_ID A B C D
# <dbl> <dbl> <dbl> <dbl> <dbl>
#1 1 NA 1 5 NA
#2 2 1 2 1 3
#3 3 3 1 2 1