построить гистограмму частоты встречающихся в столбце значений на основе списка значений из другого файла - PullRequest
0 голосов
/ 24 апреля 2019

Я ценю любую помощь. Я хочу рассчитать частоту значений в столбце на основе списка значений в другом файле.

l1 <- data.frame(V1 = c("A1", "A2", "B-1", "C", "D", "E1")

l2 <- data.frame(
          V1 = c("m1", "m2", "m3", "m4", "m5", "m6"), 
          V2 = c("A1", "A1", "E1", "C", "D", "E1")
      )

Я хочу построить гистограмму для частоты значений в V2 из l2. Значения по оси X должны быть l1. Например, A2 и B-1 отсутствуют в l2$V2, но они все равно должны отображаться в виде меток на оси x. Можем ли мы сделать это в ggplot?

Я пытался barplot(table(x$V2)).

Построить гистограмму, где l1 - метки оси X. А частоты l2 $ V2 (например: A1 - 2, частота должна быть = 2/6)

1 Ответ

0 голосов
/ 24 апреля 2019

Вы можете легко рассчитать частоту V2 (в l2) с помощью функции count() из библиотеки dplyr .

library(dplyr)
count(l2, V2)

#   V2        n
# 1 A1        2
# 2 C         1
# 3 D         1
# 4 E1        2

Затем преобразуйте l1 в кадр данных и объедините его с результатом подсчета, чтобы сохранить все уровни в l1:

l1 <- c("A1", "A2", "B-1", "C", "D", "E1")
left_join(data.frame(V2 = l1), count(l2, V2), by = 'V2') 

#    V2  n
# 1  A1  2
# 2  A2 NA
# 3 B-1 NA
# 4   C  1
# 5   D  1
# 6  E1  2

Затем вы можете разделить число наблюдений (в данном случае 6), чтобы вычислить пропорцию, и вы можете построить гистограмму (например, с ggplot2 или с barplot(), если хотите).

library(ggplot2)
left_join(data.frame(V2 = l1), count(l2, V2), by = 'V2') %>% 
   ggplot(aes(x = V2, y = n)) + 
   geom_col()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...