有没有一种方法可以将整数值分配给R中的因子

时间:2020-04-13 20:28:51

标签: r analysis

我对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,等等。

我发现没有干净的方法可以做到这一点。其他尝试包括单独键入每个样品的名称,然后手动将其链接到因子水平,但是效果并不理想。

任何建议将不胜感激!

1 个答案:

答案 0 :(得分:2)

如果我理解正确,您希望每个xyz观测值都与某个级别相关联并逐级绘制。

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()

enter image description here