首页 > 解决方案 > 查找字符串数包含在列中

问题描述

嗨,我正在尝试计算与其他列相比存在多少字符串。
df

year = c(2020,2020,2021,2021)
name = c("Michel","Doron","Neil sean","jack")
name_1 = c("ch","2b","sn b","akcj")

df = data.frame(year,name,name_1)

我的输出列应该返回从 name_1 列到 name 列匹配的字符数。下面是输出列

df$output = c(2,0,3,4)

例如:name_1 列中的第 1 行具有 ch 即 c 和 h 字符串都存在于 name 列中。
在第 4 行中,所有 akcj 都存在于名称列中

我已经尝试使用 stringr 包中的 str_count ,但没有得到想要的输出。

标签: r

解决方案


您可以str_count用作 -

df$output <- stringr::str_count(df$name, sprintf('[%s]', df$name_1))
df$output
#[1] 2 0 3 4

另一种方法是拆分字符串并计算匹配的字符串。

df$output <- mapply(function(x, y) sum(x %in% y), 
       strsplit(df$name, ''), strsplit(df$name_1, ''))

df$output 
#[1] 2 0 3 4

推荐阅读