我有如下数据:
head(orthographic)
Word Root
1 manful man
2 carful care
3 basketful basket
4 meaningful mean
5 boxful box
6 armsful <NA>我想看看Root这个词是否在Word里面。例如,man包含在manful中,拼写不会改变。但是,car更改为careful。
My ideal output
Word Root C
1 manful man No
2 carful care Yes
3 basketful basket No
4 meaningful mean No
5 boxful box No
6 armsful <NA> <NA>我尝试过的(基于其他人的帖子):
a=orthographic$Word
b=orthographic$Root
df$a %in% df$b
charmatch(df$a,df$b)
grepl(df$a,df$b)
grep(df$a,df$b)然而,他们都没有给我我想要的输出。特别是,制定的所有守则:
2 carful care "NO" # (Instead of "Yes").我感谢任何意见/解决方案。
发布于 2020-03-19 06:05:49
我们可以使用来自str_detect的stringr
df$C <- c("Yes", "No")[stringr::str_detect(df$Word, df$Root) + 1]
df$C[is.na(df$Root)] <- NA
df
# Word Root C
#1 manful man No
#2 carful care Yes
#3 basketful basket No
#4 meaningful mean No
#5 boxful box No
#6 armsful <NA> <NA>数据
将数据保持为字符而不是因素。
df <- structure(list(Word = c("manful", "carful", "basketful", "meaningful",
"boxful", "armsful"), Root = c("man", "care", "basket", "mean",
"box", NA)), row.names = c("1", "2", "3", "4", "5", "6"), class = "data.frame")发布于 2020-03-19 10:19:30
或者,使用ifelse语句(使用str_detect的想法归功于@Ronak )
df$C <- ifelse(str_detect(df$Word, df$Root), "No", "Yes")
df
Word Root C
1 manful man No
2 carful care Yes
3 basketful basket No
4 meaningful mean No
5 boxful box No
6 armsful <NA> <NA>https://stackoverflow.com/questions/60751677
复制相似问题