dplyr :: group_by неожиданно воздействует на столбец векторов, что приводит к ошибке «Каждая группа состоит только из одного наблюдения ...» - PullRequest
0 голосов
/ 27 апреля 2018

Это , а не , дубликат , или , или , .

У меня есть data.table, который выглядит примерно так:

animal_frame

first_and_last    animal    color
c(1, 2)           dog       red
c(2, 2)           cat       red
c(4, 2)           dog       green
c(3, 1)           dog       red
c(4, 6)           pig       green
c(3, 3)           cat       red
c(4, 2)           pig       red

animal_frame$num_entry = sample(1:nrow(animal_frame), nrow(animal_frame), replace=FALSE) дает мне столбец индексации.

Здесь ось X равна num_entry, а ось Y равна first_and_last, что дает две точки на каждый тик по оси X. Каждая из этих точек должна быть связана с вертикальной линией согласно этому вопросу:

ggplot(data=animal_frame, aes(x=num_entry, y=first_and_last)) +
  geom_line(aes(group=num_entry, color=color)) + 
  scale_color_manual(values = c("green"="green", "red"="red"))

Это хорошо работает. Теперь я хотел бы рассмотреть этот же график в соответствии с animal, но мне нужен индексный столбец (начиная с 1) для каждого животного. Итак, используя dplyr, я запускаю:

animal_frame %<>%
  group_by(animal) %>%
  mutate(facet_num_entry = sample(1:n(), n(), replace=FALSE)) %>%
  ungroup()

Теперь я попробую:

ggplot(data=animal_frame, aes(x=facet_num_entry, y=first_and_last)) +
  geom_line(aes(group=facet_num_entry, color=color)) + 
  scale_color_manual(values = c("green"="green", "red"="red")) +
  facet_grid(animal ~ .)

Но получите geom_path: Каждая группа состоит только из одного наблюдения. Вам нужно настроить эстетику группы?

Когда я смотрю на фреймы данных, похоже, что когда я добавляю столбец num_entry, для каждого выборочного номера есть две записи (я подозреваю, что это связано с тем фактом, что каждая запись в first_and_last является вектором. Это соответственно дает мне два наблюдения для группировки - и, таким образом, две точки для рисования вертикальной линии между ними.) С другой стороны, когда я добавляю столбец facet_num_entry, для каждого выборочного числа есть только одна запись. , Я думаю, что может быть что-то происходит с падением first_and_last? Но я уже давно этим занимаюсь и не могу понять.

Кроме того, если есть более простой способ структурировать мои данные так, чтобы эти вертикальные линии были возможны, не стесняйтесь предлагать это. Я не мог найти ничего проще, чем сделать first_and_last столбец векторов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...