我有2个数据框
market<-c('New York, NY','Some place in Chicago','Lala land')
d1<-as.data.frame(market)
metro<-c('Chicago','Meow','New York')
d2<-as.data.frame(metro)
我需要在d2$inmarket
中找到d2$metro
区域时创建另一列d1$market
为1,否则为0.我的目标是让d2看起来像这样:
metro inmarket
1 Chicago 1
2 Meow 0
3 New York 1
我已经探讨了grep
和sqldf
选项,但我没有看到任何回答我的问题。
This会返回匹配的d1
索引,但我需要索引d2
才能赋值1或0。
我还可以使用sqldf
选择匹配的d1
中的行,但我无法反过来,因为我无法搜索{ {1}}显然是{1}}。
d2$metro
有什么想法吗?
编辑:这适用于一个元素,但我需要循环:
d1$market
答案 0 :(得分:0)
一种选择是将子线和市场&#39;列&#39; d1&#39;并使用%in%
d2$inmarket <- +(d2$metro %in% gsub(paste0('.*(', paste(d2$metro,
collapse='|'), ').*'), '\\1', d1$market))
d2
# metro inmarket
#1 Chicago 1
#2 Meow 0
#3 New York 1