Квадратный график для одного ряда (частотной) таблицы - PullRequest
0 голосов
/ 28 апреля 2019

У меня есть набор данных в виде файла .csv (в основном: выбор вин людей в зависимости от происхождения воспроизводимой музыки).Чтение этого как информационного кадра приводит к тому, что df выглядит так:

   Music   Wine
1  French  French
2  Italian French
3  None    Italian
4  Italian Italian
5  French  Other
...

В виде таблицы это выглядит так:

          Wine
Music        Other    French      Italian
French       35       39            1
None         43       30           11
Italian      35       30           19

Теперь я хочу создать частотную диаграмму ТОЛЬКОотображает относительное распределение покупок, сделанных с помощью Music == "None".Таким образом, в основном я получил бы Other = 0.511904, французский = 0.3571429, итальянский = 0.1309524.

Теперь моя проблема заключается в том, что подмножество этой таблицы не работает.

noMusic <- prop.table(table(data[data$Music == "None"]))
geenMuziekTabel <- prop.table(table(data[data$Music == "None"]))

Оба результата приводят к такому:

[1] 0.144032922 0.004115226 0.045267490 0.078189300          NA          NA          NA          NA
 [9]          NA          NA          NA          NA          NA          NA          NA          NA
[17]          NA          NA          NA          NA          NA          NA          NA          NA
[25]          NA          NA          NA          NA          NA          NA          NA          NA
[33]          NA          NA          NA          NA          NA          NA          NA          NA
[41]          NA          NA          NA          NA          NA          NA          NA          NA
[49]          NA          NA          NA          NA          NA          NA          NA          NA
[57]          NA          NA          NA          NA          NA          NA          NA          NA
[65]          NA          NA          NA          NA          NA          NA          NA          NA
[73]          NA          NA          NA          NA          NA          NA          NA          NA
[81]          NA          NA          NA          NA

Я подумал: может быть, я должен поднастроить свой фрейм данных ПЕРВЫМ, а затем сделать из него пропорциональную таблицу, но R, кажется, помнит, что были другие данные, и составляет эту таблицу:

          Wine
Music        Other    French      Italian
French       0        0             0
None         43       30           11
Italian      0        0            0

Я тоже пробовал разные вещи, но не могу понять.Кто-нибудь знает, что я делаю неправильно?

Редактировать: решение, основанное на принятом ответе, выглядит следующим образом:

noMusicTable <- prop.table(table(musicwine$Wine[musicwine$Music == "None"]))
#noMusicTable <- prop.table(table(subset(musicwine, Music == "None", select = Wine)))
noMusicDF <- as.data.frame(noMusicTable)
# need to declare x and y explicitly; use stat = 'identity' to map bars to y-variable
ggplot(noMusicDF, mapping = aes(x = Var1, y = Freq)) + geom_bar(stat = 'identity', fill='red')

1 Ответ

1 голос
/ 28 апреля 2019

Вот три способа правильно установить подмножество:

dat <- read.table(text = 
  "Music   Wine
   French  French
   Italian French
   None    Italian
   Italian Italian
   French  Other", header = TRUE)

# Two different ways to subset
prop.table(table(dat$Wine[dat$Music == "None"]))
prop.table(table(subset(dat, Music == "None", select = Wine)))

# With dplyr and piping
library(dplyr)
dat %>% 
  filter(Music == "None") %>% 
  select(Wine) %>% 
  table() %>% 
  prop.table()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...