【发布时间】:2018-05-28 16:17:49
【问题描述】:
我正在尝试查找一个字符串是否包含在不同数据框中的另一个字符串中。我正在使用 if 语句和 for 循环,我想保持结构不变,但找不到要使用的正确语法。 我的第一个数据框的示例是:
Route1
x y z
w x f z
a b c
x y z
我的第二个数据框的一个例子是:
Route2 Track
x y z A
v w x f z B
a b C
一旦我发现 Route1 是否包含在 Route 2 中,我想为 Route 1 分配相应的 Track。因此,数据帧 1 的最终数据帧应该是:
Route1 CalculatedTrack
x y z A
w x f z B
a b
x y z A
我目前的公式是:
for (i in 1:nrow(df1)){
for (j in 1:nrow(df2)){
if((((grepl(df1$Route1[i], df2$Route2[j],perl = TRUE)==TRUE){
df1$CalculatedTrack<-df2$Track[j]
}
}
}
因此我想遍历每一行以查看 Route1 是否在任何 Route2 中。请注意,我在每个数据框中都有多个列。
感谢您的帮助
【问题讨论】:
-
看看
?mergein base R or in thedata.tablepackage如果速度是一个问题。 -
对于合并,“路线”不需要相同吗?
-
您是对的,抱歉,您已经看到您也在寻找部分匹配项。那么你可能还需要
%like%和data.table。 -
是您感兴趣的部分匹配的顺序,因此,在 Route 1 中您可能有“cde”,在 Route 2 中您可能有两个条目,如“bcde”和“cdef”,两者都应该是匹配到了,这两个Route 2入口轨迹不同的情况如何处理?
-
'x y z' 匹配轨道 A 和 B。什么规则来决定你想要哪个?
标签: r string loops if-statement