r - 查找字符串数包含在列中
问题描述
嗨,我正在尝试计算与其他列相比存在多少字符串。
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 ,但没有得到想要的输出。
解决方案
您可以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
推荐阅读
- vaadin - 如何使 vaadin-split-layout 的内容独立滚动?
- javascript - 如何使用 if/else 语句显示/隐藏多个 div?
- python - python for循环从第一个元素开始,没有第0个元素
- c++ - 如何在 Chromium 中分配全局变量?
- google-chrome - 如何在打开和关闭的 Firefox 窗口之间循环?
- python - 如何计算数据框两列中元素的出现次数?
- xml - C# 中的 LINQ/XML - 使用 XPathEvaluate 返回 XPATH 计数
- node.js - Sendgrid API 密钥未从 env 变量中正确读取
- generics - 有没有办法在 VHDL 中从通用设置多个端口?
- html - Spring boot 从另一个控制器修改一个控制器中定义的 model.attribute 值