r - a,根据字符向量中的元素删除重复项
问题描述
我有这样的数据框,它包含 3 个或更多由逗号 (,) 分隔的字符,如果它包含相同的字符,我想删除该行。
x <-c(1,2,3,4,5)
y <-c("a,a,a","a,a,b,c","b,c,a","b,b,b,b","a,b,b,c")
df<-data.frame(x,y)
所需的输出是
x <-c(2,3,5)
y <-c("a,a,b,c","b,c,a","a,b,b,c")
df<-data.frame(x,y)
解决方案
您可以使用separate_rows
将逗号分隔的值拆分为不同的行,删除只有 1 个不同值的组并再次汇总数据。
library(dplyr)
df %>%
tidyr::separate_rows(y) %>%
group_by(x) %>%
filter(n_distinct(y) > 1) %>%
summarise(y = toString(y))
# x y
# <dbl> <chr>
#1 2 a, b, c
#2 3 b, c, a
#3 5 a, b, c
在基础 R 中:
df[sapply(strsplit(df$y, ','), function(x) length(unique(x))) > 1, ]
推荐阅读
- java - Webflux 没有在我的 Atlas MongoDB(集群)中插入信息
- c# - linq SelectMany 日期
- html - 将ol的文本涂成红色
- javascript - 如何解决JavaScript中的以下问题?
- php - 为什么我会收到带有此 CURL PUT 的通用 internal_server_error 消息?
- powershell - 调用另一个脚本时 PowerShell 忽略配置文件脚本
- c++ - Windows 10 - 模拟目录路径
- css - 用更少的时间定义媒体查询
- google-sheets - VLOOKUP 条件格式不起作用
- reactjs - 从子组件 React 获取输入数据