![](/img/trans.png)
[英]Transpose rows and columns in data frame using first column entries as colnames in new R data frame
[英]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.