簡體   English   中英

如何將第一行轉換為 R 中的新列?

[英]How to transpose the first rows into new columns in R?

我想將前兩行轉置為兩個新列,並保留數據框的其余部分。 我如何在 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 是新列的名稱,它們是自動創建的。

感謝您提供任何幫助。

基礎 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

盡管我對"2012""PL"的明顯關鍵屬性有些擔憂。 也就是說,您從每個實例的三個實例開始,並以兩個實例結束。 從邏輯上講,這是有道理的,盡管在我看來,它看起來好像您有一個與單個"2012","PL"相關聯的數字矩陣,但也許這不是數據到達您的方式。 (如果您可以在到達這一點之前更改數據的格式,以便您擁有一個矩陣及其關聯的鍵,那么它可能會使數據處理更加直接、聲明性和抗錯誤。)

這是slice的選項

library(dplyr)
DF %>%
   select(A) %>% 
   slice(1:2) %>% 
   t %>% 
   as.data.frame %>% 
   bind_cols(DF %>% 
             slice(-(1:2)))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM