Как разделить символы и рассчитать соответствующую частоту в R - PullRequest
1 голос
/ 04 апреля 2020

Вот мои данные:

 [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"

Есть ли возможный способ сделать это?

Ответы [ 2 ]

3 голосов
/ 04 апреля 2020

Вероятно, не самый лучший или более элегантный способ сделать это, но возможное решение состоит в том, чтобы 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 голос
/ 04 апреля 2020

В базе R вы можете unlist столбец, удалить значения NA, разделить их на запятую и рассчитать частоту, используя table.

table(unlist(strsplit(na.omit(unlist(as.character(da$name))), ",")))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...