2016-11-02 3 views
1

Я хочу, чтобы все мои строки были преобразованы в собственные столбцы, поэтому в конце концов все будет в одной строке. Это как мой dataframe выглядит сейчас:Как превратить строки в столбцы в 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

Просьба представить данные в виде простой в пасте и, возможно, как ожидаемый результат, предполагают выглядеть. –

+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 

Как вы хотите, одна строка в конце, то есть объединить все строки в одном списке? Итак:

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

Но как иметь дело с именами столбцов? Немой подход может работать:

> 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.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" 

наконец, назначить ls и new.column.names к новому кадру данных:

> 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

Спасибо, это хороший старт, но это список, а то, что я хочу, - это dataframe. Возможно ли, чтобы все эти цифры имели свою колонку? – Romy

 Смежные вопросы

  • Нет связанных вопросов^_^