gpt4 book ai didi

r - 根据条件折叠多行

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

我想使用 tidyverse 折叠多个行条件,这是我的示例

df <- data.frame(value = c(2,2,2,2,1,1,1,1,1,1),
name1 = c("a", "a", "b", "b", 'c', "d", "e", NA, NA, NA),
name2 = c("x", "x", "x", "x", "x", "x", "y", NA, NA, NA))

我想折叠行,表示 name1name2 关联相同,然后这些行将折叠成单行。对我有什么建议吗?

我想要的输出如

value name1 name2
1 2 a x
2 2 b x
3 1 c x
4 1 d x
5 1 e y
6 1 <NA> <NA>
7 1 <NA> <NA>
8 1 <NA> <NA>

最佳答案

这可能有帮助

library(dplyr)
df %>%
filter(!duplicated(across(everything()))|if_any(everything(), is.na))

-输出

 value name1 name2
1 2 a x
2 2 b x
3 1 c x
4 1 d x
5 1 e y
6 1 <NA> <NA>
7 1 <NA> <NA>
8 1 <NA> <NA>

如果基于选定的列数

df %>%
filter(!duplicated(across(c(name1, name2)))|if_any(c(name1, name2), is.na))

或者在基础R

 df[!duplicated(df)|rowSums(is.na(df)) > 0,]
value name1 name2
1 2 a x
3 2 b x
5 1 c x
6 1 d x
7 1 e y
8 1 <NA> <NA>
9 1 <NA> <NA>
10 1 <NA> <NA>

关于r - 根据条件折叠多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69530859/

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