R中如何拆分字符并计算对应的频率

How to split characters and calculate the corresponding frequency in R

这是我的数据:

 [1] NA                                              NA                                             
 [3] NA                                              "EP, IP, RA, SH"
 [5] "EO, EP"                                        NA 

我使用以下方法拆分数据:

da$name<-str_split(da$name,",")

数据变为:

[[1]]
[1] NA

[[2]]
[1] NA

[[3]]
[1] NA

[[4]]
[1] "EP"  " IP" " RA"  " SH"

[[5]]
[1] "EO" " EP"         

[[6]]
[1] NA

我想计算 NA,"EP","IP","RA","SH" 和 "EO"

的频率

有没有办法做到这一点?

可能不是最好或更优雅的方法,但一个可能的解决方案是 unlist 你的 strsplit 结果,使其成为所有单个值的向量,然后计算对于每个不同的值:

df <- data.frame(Vec = c(NA,NA,NA,"EP, IP, RA, SH","EO, EP",NA))

vec <- unlist(strsplit(as.character(df$Vec),","))

library(dplyr)
as.data.frame(vec) %>% count(vec)

# A tibble: 7 x 2
  vec       n
  <fct> <int>
1 " EP"     1
2 " IP"     1
3 " RA"     1
4 " SH"     1
5 "EO"      1
6 "EP"      1
7  NA       4

它是否回答了您的问题?

在 base R 中,您可以 unlist 列,删除 NA 值,用逗号分隔它们并使用 table 计算频率。

table(unlist(strsplit(na.omit(unlist(as.character(da$name))), ",")))