如何计算每个主题变量列中字母出现的次数 [R]
How to get count of letter occurrence in variable column per subject [R]
在 SO 上搜索答案后,我着手寻找如何具体应用解决方案来解决我的问题。
问题小结:
我有一个非常长的数据集,每个 subject/ID 有几个观察值。感兴趣的列有多个字母表示该主题中该类型生物现象的数量。
- 例如:如果主题 12345 有 'U U U S',我希望有一个单独的 column/variable 吐出不仅仅是“U's”的计数,而是这样做 每个科目;后面有 12345 的每一行都会在该列中有数字 3,并且会忽略“S”
我试过的:
- dplyr 计数和聚合方法 - 数据变得非常快速
- 在excel中手工编码,却发现了数千行...
代码和可重现示例:
数据大致如下('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))
这个问题在我的工作中经常出现,所以如果能找到一个可重复的程序化解决方案就好了!
谢谢!
听起来您只是想检测字母 u
在 raw
的每一行中出现的次数,并找出每个 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
在 SO 上搜索答案后,我着手寻找如何具体应用解决方案来解决我的问题。
问题小结: 我有一个非常长的数据集,每个 subject/ID 有几个观察值。感兴趣的列有多个字母表示该主题中该类型生物现象的数量。
- 例如:如果主题 12345 有 'U U U S',我希望有一个单独的 column/variable 吐出不仅仅是“U's”的计数,而是这样做 每个科目;后面有 12345 的每一行都会在该列中有数字 3,并且会忽略“S”
我试过的:
- dplyr 计数和聚合方法 - 数据变得非常快速
- 在excel中手工编码,却发现了数千行...
代码和可重现示例:
数据大致如下('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))
这个问题在我的工作中经常出现,所以如果能找到一个可重复的程序化解决方案就好了!
谢谢!
听起来您只是想检测字母 u
在 raw
的每一行中出现的次数,并找出每个 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