首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >匹配混合字符串并在R中返回相应的列值

匹配混合字符串并在R中返回相应的列值
EN

Stack Overflow用户
提问于 2017-12-29 05:54:20
回答 1查看 79关注 0票数 0

下面是一个在R中有两列字符数据类型的数据框架,我的要求是假设如果我有一个混乱的字符串"FB,AI,IT,GE",我想测试这个混乱的字符串是否存在于"a2列“中,然后返回相应的"a1列”值。显然,第一个"a2列“值与上面混乱的字符串匹配,我需要返回相应的"a1”值。如果能避免使用“否则”,我会很感激。

代码语言:javascript
复制
a1 = c("B1","B2","B3","B4","B5")
a2 = c("IT,GE,FB,AI","GE,AI","FB,IT,AI","GE,IT,FB","AI")
a12 = data.frame(a1,a2)
a12$a1 = as.character(a12$a1)
a12$a2 = as.character(a12$a2)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-29 06:19:35

代码语言:javascript
复制
#string to be matched
match_str <- "FB,AI,IT,GE"

idx <- sapply(strsplit(as.character(a12$a2),","), 
              function(x) setequal(unlist(strsplit(as.character(match_str),",")), unlist(x)))
a12$a1[idx]

产出如下:

代码语言:javascript
复制
[1] "B1"
代码语言:javascript
复制
#sample data
> dput(a12)
structure(list(a1 = c("B1", "B2", "B3", "B4", "B5"), a2 = c("IT,GE,FB,AI", 
"GE,AI", "FB,IT,AI", "GE,IT,FB", "AI")), .Names = c("a1", "a2"
), row.names = c(NA, -5L), class = "data.frame")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48018075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档