gpt4 book ai didi

R折叠并自动填充行中的空白

转载 作者:行者123 更新时间:2023-12-02 06:47:24 24 4
gpt4 key购买 nike

我有以下示例数据集:

ID = c(123,123)
NAmer = c("ABC","ABC")
field1 = c(1,NA)
field2 = c(NA,2)
field3 = c(NA,NA)
field4 = c(NA,NA)
field5 = c(NA,NA)
IHave <- data.frame(ID,NAmer,field1,field2,field3,field4,field5)
Iwant <- c(123,"ABC",1,2,NA,NA,NA)

如何使用 data.tabletidyverseIHaveIwant

实际上我有大约 000 行。

最佳答案

基于示例,在按'ID'、'NAmer'分组后,如果至少有一个非NA元素,则只保留非NA元素

library(dplyr)
IHave %>%
group_by(ID, NAmer) %>%
summarise_all(list(~ if(all(is.na(.))) NA else .[!is.na(.)]))
# A tibble: 1 x 7
# Groups: ID [1]
# ID NAmer field1 field2 field3 field4 field5
# <dbl> <fct> <dbl> <dbl> <lgl> <lgl> <lgl>
#1 123 ABC 1 2 NA NA NA

或者使用 group by coalesce

IHave %>%
group_by(ID, NAmer) %>%
summarise_all(list(~ coalesce(!!! .)))
# A tibble: 1 x 7
# Groups: ID [1]
# ID NAmer field1 field2 field3 field4 field5
# <dbl> <fct> <dbl> <dbl> <lgl> <lgl> <lgl>
#1 123 ABC 1 2 NA NA NA

或者data.table中同样的逻辑

library(data.table)
setDT(IHave)[, lapply(.SD, function(x) coalesce(!!! x)), .(ID, NAmer)]
# ID NAmer field1 field2 field3 field4 field5
#1: 123 ABC 1 2 NA NA NA

关于R折叠并自动填充行中的空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54924985/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com