繁体   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