【问题标题】:dplyr fails to count substring in vectordplyr 无法计算向量中的子字符串
【发布时间】:2021-05-01 13:36:31
【问题描述】:

我需要递归计算子字符串x 在字符串向量data$y 中出现的次数

data <- data.frame(x=c("aa","bb","cc"),y=c("a & aa & aaa","b","aa"))

desiderata <- data %>%
  group_by(x) %>%
  summarise(n=sum(grepl(x,y)))

desiderata <- data.frame(x=c("aa","bb","cc"),n=c(3,0,0))

【问题讨论】:

  • 你确定第一条记录是3吗?我认为应该是 2?

标签: r dataframe dplyr plyr grepl


【解决方案1】:

如果我理解正确,第一条记录应该是 2。这是解决方案:

library(stringr)

data %>%
  group_by(x) %>%
  summarise(n = str_count(y, x))

输出:

  x         n
  <chr> <int>
1 aa        2
2 bb        0
3 cc        0

关于代码 - 我认为您不需要 group_bysummarise - mutate 可以正常工作,并且您有完整的列供参考:

data %>%
  mutate(n = str_count(y, x))

输出:

   x            y n
1 aa a & aa & aaa 2
2 bb            b 0
3 cc           aa 0

【讨论】:

    猜你喜欢
    • 2017-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    相关资源
    最近更新 更多