r - 计算一列中有多少个字符出现在另一列中

标签 r

我正在计算 expected 列中有多少个字符出现在 read 列中。 它们可能以不同的顺序出现,不应计算两次。

比如在这个df中

df <- tibble::tibble(expected=c("AL0","CP1","NM3","PK9","RM2"),
                     read=c("AL0X24",
                            "CXP44",
                            "MLN",
                            "KKRR9",
                            "22MMRRS"
                     ))

结果应该是:

result <- c(3,2,2,2,3)

最佳答案

str_extract/n_distinct 选项。使用paste[, ]与'expected'列字符串包裹起来,从'中提取'expected'中显示模式的所有字符读取'并使用 n_distinct

计算不同元素的数量
library(stringr)
library(dplyr)
with(df, sapply(str_extract_all(read, paste0("[", expected, "]")), n_distinct))
#[1] 3 2 2 2 3

或者另一个选项是 str_replace_allstr_count。在这里,我们使用 str_replace_all 删除“read”中的重复字符,并通过粘贴 []

df %>% 
    mutate(Count = str_count(str_replace_all(read, "(\\w)\\1+", "\\1"), 
        str_c("[", expected, "]")))
# A tibble: 5 x 3
#  expected read    Count
#  <chr>    <chr>   <int>
#1 AL0      AL0X24      3
#2 CP1      CXP44       2
#3 NM3      MLN         2
#4 PK9      KKRR9       2
#5 RM2      22MMRRS     3

关于r - 计算一列中有多少个字符出现在另一列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63982895/

相关文章:

r - 组合上标和包含 < 符号的变量标签时使用 ggplot geom_text

r - 子集 data.frame 联合多个间隔

r - Dplyr "Arrange"在函数内向其传递参数时函数不起作用

python - python中的 Gamma 分布

r - 如何在 R/Shiny 中使用(重新/)验证码?

r - 控制行以与 dplyr 中的不同行保持一致

r - 如何使用 R 中的 rjson/RJSONIO 的 toJSON 方法生成有效的 JSON?

r - Github Action 因 R CMD 检查而失败,使用旧提交?

python - 在 Pandas 中合并与在 R 中合并

基于 R 树的方法,如 randomForest、adaboost : interpret result of same data with different format