2017-07-20 30 views
0

我有一個數據集在以下格式: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

僅供參考,最好有獨特的列名稱。

如果您的數據看起來像這個問題,你可以在同一時間分開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 

DATA

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