应用 strsplit rowwise 并将列添加到数据
a=c("A","A,B","C","B,C")
b=c(1,2,3,4)
dat<-data.frame(a,b)
c=c("A","B","D","A")
d=c(5,6,7,8)
g<-data.frame(c,d)
我想比较 dat 和 g。如果 dat 的 a 列中的元素与 g 中的 c 列元素匹配,则 g 中的 d 列的匹配条目应添加到 dat 中。
dat$NEW =""
sapply(strsplit(as.character(dat$a), ","),function(x){tmp=grep(x,g$c);dat$NEW=x)
我怎样才能使:
g[grep("A",g$c),]
c d
1 A 5
4 A 8
dat$NEW 中的条目看起来像“5,8”?
a=c("A","A,B","C","B,C")
b=c(1,2,3,4)
dat<-data.frame(a,b)
c=c("A","B","D","A")
d=c(5,6,7,8)
g<-data.frame(c,d)
I would like to compare dat and g. If elements in column a of dat matches an element of column c in g, matched entry of column d in g should be added to dat.
dat$NEW =""
sapply(strsplit(as.character(dat$a), ","),function(x){tmp=grep(x,g$c);dat$NEW=x)
How can I make :
g[grep("A",g$c),]
c d
1 A 5
4 A 8
entry in dat$NEW should look like "5,8" ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这对您的数据有效吗?
Is this working for your data?
这还不完全清楚,但我认为您描述的是这样的:
步骤 1:合并 data.frame g 中的重复元素
步骤 2:将其合并到 data.frame dat
结果:
It's not entirely clear, but this what I think you describe:
Step 1: Combine duplicated elements in your data.frame g
Step 2: Combine this into your data.frame dat
Results: