【问题标题】:How exactly does the "group =" variable work in data.frame()“group =”变量在 data.frame() 中究竟是如何工作的
【发布时间】:2018-04-25 03:18:00
【问题描述】:

我找不到太多关于group 变量在data.frame 中的确切作用的信息。我有如下三个向量:

compare <- c("5vs2", "8vs5", "11vs8")
up <- c(4432, 1578, 2254)
down <- c(-4360, -1324, -2652)

我正在尝试为条形图创建数据框。我创建它如下:

up_down <- data.frame(
  group = c("Up", "Down"),
  x = compare, 
  y=c(up, down))

输出数据帧如下:

  group     x     y
1    Up  5vs2  4432
2  Down  8vs5  1578
3    Up 11vs8  2254
4  Down  5vs2 -4360
5    Up  8vs5 -1324
6  Down 11vs8 -2652

在这里可以看出,在第 5 行中,分组应该是Down,但它却变成了Up。我到底错过了什么?

绘制图表后,x 值会乱序排列,首先放置 11vs8,然后放置 6vs3,最后放置 9vs6。我觉得这些应该是显而易见的问题需要解决,但我无法弄清楚。

ggplot(up_down, aes(x=x, y=y, fill=group))+
  geom_bar(stat="identity", position="identity")

【问题讨论】:

标签: r dataframe ggplot2


【解决方案1】:

您正在绑定长度为 2、3 和 6 的向量。R 循环使用向量以适应最大长度,因此 group 重复 1 2 1 2 1 2。如果您想在这里避免这种情况,请尝试:group = rep(c("Up", "Down"), each = 3)

【讨论】:

  • 当然对!非常感谢。这么简单的事情,我觉得很愚蠢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-01
  • 2011-06-26
  • 2021-08-15
相关资源
最近更新 更多