R表格式

时间:2017-07-20 19:39:46

标签: r

我有一个以下列格式提供的数据集:

Metric 1    Metric 2    Metric 1    Metric 2    Metric 1    Metric 2
4           4           4           4           4           78
4           4           4           4           4           -4
45          45          45          45          45          37
5           5           5           5           5           -3

但我希望几乎将数据转换为两列,如下所示:

Metric 1    Metric 2
4           4
4           4
45          45
5           5
4           4
4           4
45          45
5           5
4           78
4           -4
45          37
5           -3

我环顾四周,并没有找到一个我能够实现的解决方案。有人有建议吗?我知道这可能是一个简单的解决方案。

2 个答案:

答案 0 :(得分:2)

仅供参考,最好有唯一的列名。

如果您的数据在问题中显示,您可以一次拆分2列的块,然后rbind

do.call(rbind, lapply(seq(1, NCOL(df), 2), function(i) df[,i:(i+1)]))
#   Metric 1 Metric 2
#1         4        4
#2         4        4
#3        45       45
#4         5        5
#5         4        4
#6         4        4
#7        45       45
#8         5        5
#9         4       78
#10        4       -4
#11       45       37
#12        5       -3

数据

df = structure(list(`Metric 1` = c(4L, 4L, 45L, 5L), `Metric 2` = c(4L, 
4L, 45L, 5L), `Metric 1` = c(4L, 4L, 45L, 5L), `Metric 2` = c(4L, 
4L, 45L, 5L), `Metric 1` = c(4L, 4L, 45L, 5L), `Metric 2` = c(78L, 
-4L, 37L, -3L)), .Names = c("Metric 1", "Metric 2", "Metric 1", 
"Metric 2", "Metric 1", "Metric 2"), class = "data.frame", row.names = c(NA, 
-4L))

答案 1 :(得分:0)

或者您可以使用melt

尝试此操作
df=melt(df)
data.frame('Metric 1'=df$value[df$variable=='Metric 1'],
           'Metric 2'=df$value[df$variable=='Metric 2'])

   Metric.1 Metric.2
1         4        4
2         4        4
3        45       45
4         5        5
5         4        4
6         4        4
7        45       45
8         5        5
9         4        4
10        4        4
11       45       45
12        5        5