Как переместить первые строки в новые столбцы в R? - PullRequest
1 голос
/ 11 февраля 2020

Я хочу переставить первые две строки в два новых столбца и оставить остальную часть фрейма данных. Как мне сделать это в R?

Мои исходные данные

A <- c("2012","PL",3,2)
B <- c("2012","PL",6,1)
C <- c("2012","PL",7,4) 
DF <- data.frame(A,B,C)

Мои окончательные данные после транспонирования

V1 <- c("2012","2012")
V2 <- c("PL","PL")
A <- c(3,2)
B <- c(6,1)
C <- c(7,4) 
DF <- data.frame(V1,V2,A,B,C)

Где V1 и V2 - имена для новых столбцов и они создаются автоматически.

Спасибо за любую помощь.

Ответы [ 2 ]

0 голосов
/ 11 февраля 2020

База R:

cbind(t(DF[1:2, 1, drop=FALSE]), DF[-(1:2),])
# Warning in data.frame(..., check.names = FALSE) :
#   row names were found from a short variable and have been discarded
#      1  2 A B C
# 1 2012 PL 3 6 7
# 2 2012 PL 2 1 4

, хотя у меня есть некоторые опасения по поводу очевидного свойства key "2012" и "PL". То есть вы начинаете с трех экземпляров каждого и заканчиваете двумя. Логически это имеет смысл, хотя на самом деле для меня это выглядит так, как будто у вас есть матрица чисел, связанная с одиночным "2012","PL", но, возможно, это не то, как данные поступают к вам. (Если вы можете изменить формат данных до того, как перейдете к этому моменту, чтобы у вас была матрица и связанные с ней ключи, это может сделать манипулирование данными более прямым, декларативным и устойчивым к ошибкам.)

0 голосов
/ 11 февраля 2020

Вот вариант с slice

library(dplyr)
DF %>%
   select(A) %>% 
   slice(1:2) %>% 
   t %>% 
   as.data.frame %>% 
   bind_cols(DF %>% 
             slice(-(1:2)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...