[英]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.