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

问题描述 投票:0回答:2

这是我的数据:

[1]不适用不适用[3] NA“ EP,IP,RA,SH”[5]“ EO,EP”不适用我使用以下方法拆分数据: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”,“ EP”,“ IP”,“ RA”,“ SH”和“ EO”的频率有没有可能做到这一点?

r split character frequency-analysis
2个回答
1
投票

[可能不是最好的或更简洁的方法,但是可能的解决方案是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

它回答了您的问题吗?


1
投票

在基数R中,您可以unlist该列,删除NA值,用逗号分割它们,然后使用table计算频率。

table(unlist(strsplit(na.omit(unlist(as.character(da$name))), ",")))
© www.soinside.com 2019 - 2024. All rights reserved.