gpt4 book ai didi

R动态地将具有NA的多个列合并为单个列

转载 作者:行者123 更新时间:2023-12-02 18:46:48 25 4
gpt4 key购买 nike

有没有办法动态合并具有 NA 值的列?

tibble(
x = c(1:2, NA, NA, NA, NA, NA),
y = c(NA, NA, 4:7, NA),
z = c(NA, NA, NA, NA, NA, NA, 9)
)

# A tibble: 7 x 3
x y z
<int> <int> <dbl>
1 1 NA NA
2 2 NA NA
3 NA 4 NA
4 NA 5 NA
5 NA 6 NA
6 NA 7 NA
7 NA NA 9

预期:

# A tibble: 7 x 3
x y z
<int> <int> <dbl>
1 1 NA NA
2 2 NA NA
3 4 4 NA
4 5 5 NA
5 6 6 NA
6 7 7 NA
7 9 NA 9

此示例是从 xlsx 文件读取的内容,因此在某些情况下 yz 列可能不存在

最佳答案

更新在罗纳克的帮助下。查看评论:现在它应该适用于具有不同列的 df:与 do.call 结合使用 coalesce 的更通用解决方案

library(dplyr)
df <- tibble(
x = c(1:2, NA, NA, NA, NA, NA),
y = c(NA, NA, 4:7, NA)
)

df %>%
mutate(result = do.call(coalesce, df))

输出:

      x     y result
<int> <int> <int>
1 1 NA 1
2 2 NA 2
3 NA 4 4
4 NA 5 5
5 NA 6 6
6 NA 7 7
7 NA NA NA

第一个答案这是来自 dplyr 包的 coalesce 的工作:查找每个位置的第一个非缺失值。

library(dplyr)
df %>% mutate(result = coalesce(x,y,z))

输出:

      x     y     z result
<int> <int> <dbl> <dbl>
1 1 NA NA 1
2 2 NA NA 2
3 NA 4 NA 4
4 NA 5 NA 5
5 NA 6 NA 6
6 NA 7 NA 7
7 NA NA 9 9

关于R动态地将具有NA的多个列合并为单个列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67328512/

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