r - 将文本列转换为 r 中的向量
问题描述
我想看看文本列是否有“a”和“b”指定值之外的元素
specified_value=c("a","b")
df=data.frame(key=c(1,2,3,4),text=c("a,b,c","a,d","1,2","a,b")
df_out=data.frame(key=c(1,2,3),text=c("c","d","1,2",NA))
这是我尝试过的:
df=df%>%mutate(text_vector=strsplit(text, split=","),
extra=text_vector[which(!text_vector %in% specified_value)])
但这不起作用,有什么建议吗?
解决方案
我们可以通过分隔符拆分“文本” ,
,separate_rows
按“键”分组,将不在“指定值”中的元素setdiff
与paste
它们一起(toString
),然后进行连接以获取原始数据集中的其他列
library(dplyr) # >= 1.0.0
library(tidyr)
df %>%
separate_rows(text) %>%
group_by(key) %>%
summarise(extra = toString(setdiff(text, specified_value))) %>%
left_join(df) %>%
mutate(extra = na_if(extra, ""))
# A tibble: 4 x 3
# key extra text
# <dbl> <chr> <chr>
#1 1 c a,b,c
#2 2 d a,d
#3 3 1, 2 1,2
#4 4 <NA> a,b
推荐阅读
- git - 允许贡献者发出拉取请求的问题
- javascript - 将 HTML 添加到 Wocomerce 产品页面
- swift - CallOutAccessory 按钮图像状态
- swift - Swift 5 - 如何获取 AVPlayer 持续时间
- javascript - 从 url 获取 JSON 数据以使用 jQuery 对 JSON 对象数据进行实时搜索
- python - 用单独的值替换每个匹配项
- c - 为什么我的 levenshtein 距离计算器无法显示 PDF 文件?
- kubernetes - GCP 中的 HELM 部署:尝试进行入口转发规则查找以在 hpa 中使用
- r - 我可以旋转由 igraph::graph 制作的网络图吗?
- javascript - react中的多表单什么都没有显示