R编码非常新,我一直在尝试使用dplyr的group_by格式化/合并df中的行。但是,我还没到那儿。
这是我的数据表的简化。前三个条目共享相同的ID,后两个条目共享相同的ID。
ID Assay1 Assay2 Assay3 Assay4 Assay5
13,12 Months,<=-65C 12 NA NA NA NA
13,12 Months,<=-65C NA 11 NA NA NA
13,12 Months,<=-65C NA NA 33 NA NA
09,06 Months,<=-65C 112 NA NA NA NA
09,06 Months,<=-65C NA 115 NA NA NA
我要实现以下目标:
ID Assay1 Assay2 Assay3 Assay4 Assay5
13,12 Months,<=-65C 12 11 33 NA NA
09,06 Months,<=-65C 112 115 NA NA NA
以便将AssayValueX中的值合并到每个唯一ID的一行中。我已经将group_by与summary一起使用,但是我不希望有摘要...我想要一个包含合并行的新df!如果其他功能更适合实现此目的,请告诉我。
最佳答案
您可以使用dplyr
和zoo
df %>%
group_by(ID) %>%
mutate_each(funs(na.locf(., na.rm = FALSE, fromLast = FALSE)))%>%filter(row_number()==n())
ID Assay1 Assay2 Assay3 Assay4 Assay5
13,12 Months,<=-65C 12 11 33 NA NA
09,06 Months,<=-65C 112 115 NA NA NA
编辑给你另外的问题
数据:
ID Assay1 Assay2 Assay3 Assay4 Assay5
1 13,12 Months,<=-65C 12 13 NA NA NA
2 13,12 Months,<=-65C 11 11 999 NA NA
3 13,12 Months,<=-65C NA NA 33 NA NA
4 09,06 Months,<=-65C 112 NA NA NA NA
5 09,06 Months,<=-65C NA 115 NA NA NA
解决方案 df=df %>%
group_by(ID) %>%
summarise_all(funs(toString(na.omit(.))))
df[df=='']=NA
> df
ID Assay1 Assay2 Assay3 Assay4 Assay5
<chr> <chr> <chr> <chr> <chr> <chr>
1 09,06 Months,<=-65C 112 115 <NA> <NA> <NA>
2 13,12 Months,<=-65C 12, 11 13, 11 999, 33 <NA> <NA>
关于r - 合并行,并用group_by和填充空白位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45060439/