2016-11-02 15 views
1

すべての行をそれぞれの列に変換して、すべてが最後に1行になるようにします。これは私のデータフレームが今どのように見えるかです:Rデータフレーム内の行を列に変換する方法は?

track     time UTM_WGS84.Longitude UTM_WGS84.Latitude 
1  1 2015-10-14 23:59:55.711   5.481687   51.43635 
2  1 2015-10-14 23:59:55.717   5.481689   51.43635 
3  1 2015-10-14 23:59:55.723   5.481689   51.43635 
4  1 2015-10-14 23:59:55.730   5.481690   51.43635 
5  1 2015-10-14 23:59:55.763   5.481691   51.43635 
6  1 2015-10-14 23:59:55.804   5.481691   51.43635 
7  1 2015-10-14 23:59:55.840   5.481692   51.43635 
8  2 2015-10-14 23:59:55.882   5.481692   51.43635 
9  2 2015-10-14 23:59:56.031   5.481693   51.43635 
10  2 2015-10-14 23:59:56.041   5.481693   51.43635 
11  2 2015-10-14 23:59:56.047   5.481693   51.43635 
12  2 2015-10-14 23:59:56.053   5.481694   51.43635 
13  3 2015-10-14 23:59:56.081   5.481695   51.43635 
14  3 2015-10-14 23:59:56.121   5.481695   51.43635 
15  3 2015-10-14 23:59:56.165   5.481695   51.43635 

私は、これはなんとかですかはわからないが、これは、私は列が見えるようにしたいものです。

最初の番号はトラックである
time1.1 - UTM_WGS84.Longitude1.1 - UTM_WGS84.Latitude1.1 - time1.2 - UTM_WGS84.Longitude1.2 - UTM_WGS84.Latitude1.2 - time2.1 - UTM_WGS84.Longitude2.1 - UTM_WGS84.Latitude2.1 

2番目の数字はそのトラックの行です。 私はそれが奇妙な要求だと知っていますが、私は歩行パターンを認識するための機械学習方法にこのすべてのデータを与える方法を見つけようとしています。

これを行う方法に関するアイデアはありますか?

+2

を簡単にペースト状の、おそらく期待される結果が思うな方法でデータを入力してくださいのように見えるように。 –

+4

あなたは奇妙な機械学習方法を持っています。 – Roland

答えて

1

チェックこのデモ:あなたが望むよう

> df <- data.frame(track = c(2,1,5), A = c(1,2,3), B = c(100, 200, 300)) 
> df 
    track A B 
1  2 1 100 
2  1 2 200 
3  5 3 300 

、最後の1行、1つのリストにすべての行を組み合わせて意味?だから:

> ls <- unlist(as.list(t(df))) 
> ls 
[1] 2 1 100 1 2 200 5 3 300 

しかし、どのように列名を扱うか? 、で最後

> new.column.names <- c() 
> for(i in 1:length(track)) { 
    for(k in 1:length(column.name)) { 
     str <- paste(column.name[k], track[i], sep = "") 
     str <- paste(str, row.num[i], sep = ".") 
     new.column.names <- c(new.column.names, str) 
     } 
    } 
> new.column.names 
[1] "track2.1" "A2.1"  "B2.1"  "track1.2" "A1.2"  "B1.2"  "track5.3" 
[8] "A5.3"  "B5.3" 

新しいデータフレームにlsnew.column.namesを割り当てる:

> row.num <- row.names(df) 
> row.num 
[1] "1" "2" "3" 
> column.name <- colnames(df) 
> column.name 
[1] "track" "A"  "B"  
> track <- as.character(df$track) 
> track 
[1] "2" "1" "5" 

が次に新しい列名を取得:ダムのアプローチはうまくあり

> new.df <- t(data.frame(ls)) 
> colnames(new.df) <- new.column.names 
> rownames(new.df) <- 1 

結果:

> new.df 
    track2.1 A2.1 B2.1 track1.2 A1.2 B1.2 track5.3 A5.3 B5.3 
1  2 1 100  1 2 200  5 3 300 
0

これはあなたが望むものであるかどうかを確認してください:データフレームとして

df=matrix(1:12,ncol=3) 
df 
#  [,1] [,2] [,3] 
#[1,] 1 5 9 
#[2,] 2 6 10 
#[3,] 3 7 11 
#[4,] 4 8 12 
c(t(df)) 
# [1] 1 5 9 2 6 10 3 7 11 4 8 12 

data.frame(t(c(t(df)))) 
# X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 
#1 1 5 9 2 6 10 3 7 11 4 8 12 
+0

ありがとう、それは良いスタートですが、これはリストであり、私が望むのはデータフレームです。これらの数字はすべて独自の列を持つことが可能ですか? – Romy

関連する問題