我有一个如下所示的数据框:
P sample sensor1 sensor2 sensor3........sensorP
a 1 2.45 3.56 2.345 2.33
a 2 2.37 3.46 2.22 1.98
a 3 2.78 3.22 1.45 2.67
a N
我希望它看起来像这样:
P 1_sensor1 2_sensor1 3_sensor1......N_sensorn1 2_sensor1 2_sensor2
a 2.45 2.37 2.78 3.56 3.46
等...... 因此,水平分割传感器并将样品分散在每个水平范围内。 我知道它是一个reshape2解决方案 - 我只是无法获得语法。 传感器将有不同的名称,样本长度也可能不同......因此N。
保罗。
答案 0 :(得分:0)
您可以尝试使用tidyverse
包。像这样:
library(tidyverse)
data <- data.frame(sample = 1:4,
sensor1 = rnorm(4, 2),
sensor2 = rnorm(4, 2),
sensor3 = rnorm(4, 2),
sensor4 = rnorm(4, 2))
data %>%
gather(sensor, value, sensor1:sensor4) %>%
unite(names, sample, sensor) %>%
spread(names, value)
结果就像你在寻找:
1_sensor1 1_sensor2 1_sensor3 1_sensor4 2_sensor1 2_sensor2 2_sensor3 2_sensor4
[1] 1.549545 3.166664 0.9557496 2.745318 2.246499 2.597675 3.352947 3.085531
3_sensor1 3_sensor2 3_sensor3 3_sensor4 4_sensor1 4_sensor2 4_sensor3 4_sensor4
[1] 1.879149 3.82827 3.84254 3.052806 1.529147 0.6595416 1.286521 2.302484