获得具有绘制水平的因子

时间:2018-12-03 18:00:35

标签: r

我有以下data.frame

structure(list(chr = c("1A", "1A", "1A", "1A", "1A", "1A"), locus = 
c("1145442", 
"1158042", "1158055", "1229616", "1236254", "1238114"), `ES1-5` = 
c(0.0261333333333333, 
0.0928666666666667, 0.0490166666666667, 0.0499666666666667, 
0.0758333333333333, 
0.0514666666666667), `ES6-13` = c(0.0323333333333333, 0.0387666666666667, 
0.0118166666666667, 0.000466666666666671, 0.0800333333333333, 
0.0120666666666667), `ES14-26` = c(0.0702333333333333, 0.0755666666666667, 
-0.0157833333333333, -0.0187333333333333, 0.123633333333333, 
-0.0207333333333333), `ES27-38` = c(-0.132766666666667, -0.120033333333333, 
0.000516666666666665, 0.00836666666666666, -0.112766666666667, 
0.00126666666666667), `SA1-13` = c(-0.00586666666666669, 
-0.0511333333333333, 
-0.0313833333333333, -0.0294333333333333, -0.0138666666666667, 
-0.0297333333333333), `SA14-25` = c(0.00993333333333335, 
-0.0360333333333333, 
-0.0141833333333333, -0.0106333333333333, -0.152866666666667, 
-0.0143333333333333)), row.names = c(NA, 6L), class = "data.frame")

看起来像这样:

 chr   locus      ES1-5       ES6-13     ES14-26       ES27-38       SA1-13     SA14-25
 1A 1145442 0.02613333 0.0323333333  0.07023333 -0.1327666667 -0.005866667  0.009933333
 1A 1158042 0.09286667 0.0387666667  0.07556667 -0.1200333333 -0.051133333 -0.036033333
 1A 1158055 0.04901667 0.0118166667 -0.01578333  0.0005166667 -0.031383333 -0.014183333
 1A 1229616 0.04996667 0.0004666667 -0.01873333  0.0083666667 -0.029433333 -0.010633333
 1A 1236254 0.07583333 0.0800333333  0.12363333 -0.1127666667 -0.013866667 -0.152866667
 1A 1238114 0.05146667 0.0120666667 -0.02073333  0.0012666667 -0.029733333 -0.014333333

我想将列名colnames[3:8]'ES1-5''ES6-13''ES14-26''ES27-38''SA1-13''SA14-25'转换为由字符向量colnames[3:8]的字符差引起的各个级别。我已经尝试过将data.frame换位以将字符向量放入单个列中,但是df$chr df$locus列的排列顺序不再正确。

有人可以帮我解决这个问题吗?我的最终目标是在使用点阵封装进行绘制时对这一因素的水平进行分组。请注意,由于colnames[3:8]中每一列的值都是数字,所以我不希望它们成为级别,而希望保持数字。

1 个答案:

答案 0 :(得分:1)

我会使用tidyverse从宽变长。我还列举了一个可能的格子直方图作为示例

library(tidyverse)
##I name your original data frame df
x <- df %>% gather(factors, value, -chr, -locus) %>%
                    mutate(factors = factor(factors))

##Example plot
lattice::histogram(~x$value|x$factors)

enter image description here