大型数据集R的两列之间的部分字符串匹配

时间:2018-10-29 15:16:41

标签: r

我有两列,如果两列之间存在部分匹配,我想创建一个二进制列。
例如:

X             Y        Match
hello         hello     1
hi hello      hi        1
NA            bye       NA
bye           hi bye    1
good          bad       0

我使用了以下代码

df['Match'] <- ifelse(with(df, str_detect(x, y)|str_detect(y, x)), 1, 0)

适用于前几行,但是当我在整个数据集(n = 14000)上使用它时,我不断收到此错误:

Error in stri_detect_regex(string, pattern, opts_regex = opts(pattern)) :
Incorrectly nested parentheses in regexp pattern. (U_REGEX_MISMATCHED_PAREN)

我应该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您的数据中可能带有括号或导致此错误的特殊字符。

尝试如下循环:

# First retrieve the file from the API.

print()
file = DRIVE.files().get(fileId=file_id).execute()
print(file)

file['name'] = 'A'
print(file)

# Send the request to the API.\
updated_file = DRIVE.files().update(fileId=file_id, body=file).execute()

最后打印的for(i in 1:nrow(df)) { print(i) str_detect(df$x[i], df$y[i]) } 会告诉您问题所在的行。