Java共享字符串_查找两个数据帧列之间共享的字符串

我有一个包含两列分隔字符串的数据框:

df

a b

1 a, b, c, d a, d

2 a, c a

3 b, d a, d

我想创建第三列以包含与前两列相交的字符串,例如:

a b c

1 a, b, c, d a, d a, d

2 a, c a a

3 b, d a, d d

我已经尝试了许多方法,涉及将字符串转换为列表并返回,但我似乎无法正确完成 .

使用 dplyr 我首先尝试使用:

df %

mutate(c=paste(c(intersect(unlist(strsplit(a, split=", ")), unlist(strsplit(b, split=", "))))))

这导致了一个错误:

eval中的错误(替换(expr),envir,enclos):错误的结果大小(2),预期3或1

除了不返回所需的字符串之外,这似乎也会返回每行相同大小的结果(通过将上面的 mutate 函数从 paste 更改为 length 来验证):

df %>%

mutate(c=length(c(intersect(unlist(strsplit(a, split=", ")), unlist(strsplit(b, split=", "))))))

a b c

1 a, b, c, d a, d 2

2 a, c a 2

3 b, d a, d 2

这使我担心我的所有行结果都被合并到一个结果中并重复 .

为了简化我试图在使用intersect函数之前将字符串转换为列表的事情:

df %>% mutate(a_list=list(unlist(strsplit(a, split=", "))))

但收到错误:

eval中的错误(替换(expr),envir,enclos):与STRSXP不兼容

这让人怀疑数据帧中的列表是否与 tidyverse 兼容,因此,如果我需要采用完全不同的方法 .

关于如何解决在R中的两个数据帧列之间共享的字符串问题的任何建议(以及如何处理数据帧中的列表类似值的任何见解)将不胜感激地收到 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值