如何计算每个主题变量列中字母出现的次数 [R]

How to get count of letter occurrence in variable column per subject [R]

在 SO 上搜索答案后,我着手寻找如何具体应用解决方案来解决我的问题。

问题小结: 我有一个非常长的数据集,每个 subject/ID 有几个观察值。感兴趣的列有多个字母表示该主题中该类型生物现象的数量。

我试过的:

代码和可重现示例:

数据大致如下('out' 变量是我想要的计数):

df <- data.frame(ID = c(1, 2, 2, 3, 3, 4),
                  raw = c('U U U S', 'U S U S', 'U S U', 'U', 'S U', 'UU'),
                  out= c(3, 2, 2, 1, 1, 2))

这个问题在我的工作中经常出现,所以如果能找到一个可重复的程序化解决方案就好了!

谢谢!

听起来您只是想检测字母 uraw 的每一行中出现的次数,并找出每个 ID 的最大值。此输出中的 u_cnt 列与您提供的 out 匹配,因此我认为这将为您提供所需的内容。

library(tidyverse)

df <- data.frame(ID = c(1, 2, 2, 3, 3, 4),
                  raw = c('U U U S', 'U S U S', 'U S U', 'U', 'S U', 'UU'),
                  out= c(3, 2, 2, 1, 1, 2))

df %>% 
  group_by(ID) %>% 
  mutate(u_cnt = max(str_count(raw, fixed("u", ignore_case = TRUE)))) %>% 
  ungroup()
#> # A tibble: 6 x 4
#>      ID raw       out u_cnt
#>   <dbl> <chr>   <dbl> <int>
#> 1     1 U U U S     3     3
#> 2     2 U S U S     2     2
#> 3     2 U S U       2     2
#> 4     3 U           1     1
#> 5     3 S U         1     1
#> 6     4 UU          2     2

reprex package (v2.0.1)

创建于 2022-02-17