我有一个具有以下“梯形图”结构的data.frame
a1 c1 p1 q1 s1 id
596 <NA> <NA> <NA> <NA> <NA> 2
597 <NA> <NA> <NA> <NA> <NA> 2
598 <NA> <NA> <NA> <NA> <NA> 2
599 <NA> <NA> 719800 <NA> <NA> 2
600 <NA> <NA> <NA> <NA> <NA> 2
601 <NA> <NA> <NA> <NA> <NA> 2
602 <NA> <NA> <NA> <NA> <NA> 2
603 44 <NA> <NA> 1 1 2
604 <NA> <NA> <NA> <NA> <NA> 2
Run Code Online (Sandbox Code Playgroud)
每个变量对于每个id只会出现一次,并且不同的变量可以出现在不同的行中。
我希望每个ID都有一行。我的想法是按ID在每列中重复值,然后删除重复项,因此我将得到以下内容。
a1 c1 p1 q1 s1 id
44 NA 719800 1 1 2
Run Code Online (Sandbox Code Playgroud)
但是,我无法想到一个通用的方法。我必须在许多相似的数据集上运行此任务,因此我必须尽可能通用地编写它。
这是一种dplyr方法:
library(dplyr)
df %>% group_by(id) %>% summarise_all(funs(na.omit(.)[1]))
# A tibble: 1 × 6
# id a1 c1 p1 q1 s1
# <int> <fctr> <lgl> <fctr> <fctr> <fctr>
#1 2 44 NA 719800 1 1
Run Code Online (Sandbox Code Playgroud)