我对R很陌生,但想知道是否存在一种特定的方法来对数据帧中的整数值进行分组/分析,即
样本X:int 1 2 3 4 5
样本Y:int 6 7 8 9 10
样本Z:int 11 12 13 14 15
并将它们分配给我的因子变量,该变量具有相应的级别数(在此示例中为5),在此示例中称为lvl 1,lvl 2,lvl 3,lvl 4,lvl5。目标是能够来绘制每个级别的观察结果的图表,例如lvl 1具有观察值1、6和11 / lvl 2具有观察值2、7和12,等等。
我发现没有干净的方法可以做到这一点。其他尝试包括单独键入每个样品的名称,然后手动将其链接到因子水平,但是效果并不理想。
任何建议将不胜感激!
答案 0 :(得分:2)
如果我理解正确,您希望每个x
,y
和z
观测值都与某个级别相关联并逐级绘制。
library(ggplot2)
library(reshape2)
df = data.frame(x = 1:5, y = 6:10, z = 11:15)
df$level = factor(paste0("lvl",1:5))
df
df
# x y z level
# 1 1 6 11 lvl1
# 2 2 7 12 lvl2
# 3 3 8 13 lvl3
# 4 4 9 14 lvl4
# 5 5 10 15 lvl5
使用长格式的数据进行绘图(使用ggplot2
包)更加容易。我在这里使用reshape2::melt
,但是您可以找到与tidyr::pivot_long
等效的解决方案
df <- reshape2::melt(df, id.vars = "level")
df
level variable value
1 lvl1 x 1
2 lvl2 x 2
3 lvl3 x 3
4 lvl4 x 4
5 lvl5 x 5
6 lvl1 y 6
7 lvl2 y 7
8 lvl3 y 8
9 lvl4 y 9
10 lvl5 y 10
11 lvl1 z 11
12 lvl2 z 12
13 lvl3 z 13
14 lvl4 z 14
15 lvl5 z 15
最后,您可以绘图。假设您想要每个级别的积分:
ggplot(df, aes(x = level, y = value)) + geom_point()