r - 用条件折叠多行
问题描述
我想使用折叠多个行条件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))
我想折叠行说name1
相同的关联name2
是相同的,然后这些行将折叠成单行。对我有什么建议吗?
我想要的输出像
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))
或在base 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>
推荐阅读
- android - 错误重复“无法解析配置':app:debugRuntimeClasspath'的所有文件'
- reactjs - 如何在 Windows 服务器上使用 React.js 自动创建子域
- r - zip::unzip 中的错误(zipfile = newfile,exdir = 文件夹)
- node.js - 从 HTTP Post 检索 JSON - Node JS
- c# - 添加任何以 CommunityToolkit.WinUI.* 开头的 NuGet 包都会转换为编译错误 NETSDK1022
- awk - 使用 sed/awk 从重复行中删除模式
- reactjs - ESLint 损坏:带有建议的规则必须将 `meta.hasSuggestions` 属性设置为 `true`
- angular - 使用搜索和自动完成选择 Ionic
- r - 数字转换为时间已停止工作在 r
- html - 黄色下划线 CSS 随机未应用于跨度的全宽