我有一个很大的数据集,它有2个文本变量A
和B
。 length(A)
< = length(B)
。 B
可以是带有一些额外字符的变量A
(无顺序),也可以与A
完全不同。所以我需要在这种情况下在我的数据表中创建新变量:
如果B
包含A
,则C = TRUE
。我相信部分字符串匹配比普通字符串比较更适合我。
我的数据框示例:
Home Pick
Barc Barcelona 0
F Munch FC munchen
Lakers Portland
我需要以这种方式添加新变量Side:
Home Pick Side
Barc Barcelona 0 True
F Munch FC munchen True
Lakers Portland False
我试图解决这个问题:
data_n$Side <- stringMatch(data_n$Home, data_n$Pick, normalize = "YES")
但它会给出所有负面结果 Hoverer
stringMatch('barcel', 'Barcelona 0', normalize='YES')
给出了必要的答案。我犯错的任何提示?
答案 0 :(得分:1)
我不确定它的可靠性,但agrepl
,部分模式匹配功能似乎对您的数据起作用。假设dat
是您的原始数据,那么
## read in the original data
> txt <- "Home\tPick
Barc\tBarcelona 0
F Munch\tFC munchen
Lakers\tPortland"
> dat <- read.table(text = txt, sep = '\t', header = TRUE)
## Home Pick
## 1 Barc Barcelona 0
## 2 F Munch FC munchen
## 3 Lakers Portland
使用agrepl
> d1 <- dat[,1]
> d2 <- dat[,2]
> dat$Side <- sapply(seq(nrow(dat)), function(i){
agrepl(d1[i], d2[i], ignore.case = TRUE)
})
> dat
## Home Pick Side
## 1 Barc Barcelona 0 TRUE
## 2 F Munch FC munchen TRUE
## 3 Lakers Portland FALSE