dplyr :: group_by意外地影响了一列向量,导致"每组只包含一个观察..."错误

时间:2018-04-27 13:31:52

标签: r ggplot2 dplyr

重复thisthisthis

我有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轴上每个刻度线产生两个点。根据{{​​3}}问题:

,每个点都与垂直线相连
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一列向量那样简单的事情。

0 个答案:

没有答案