簡體   English   中英

如何將單列轉換為R中的行?

[英]How to convert one single column to row in R?

這是一個示例表:

data.frame(A = c(1,2,3),
  B = c(2,4,2), 
  C = c(5,2,1), 
  class = c('apple', 'pear', 'banana'))

A   B   C   class
1   2   5   apple   
2   4   2   pear    
3   2   1   banana

我想要得到的最終結果:

name  apple  pear  banana
A     1      2     3    
B     2      4     2    
C     5      2     1    

我已經從tidyr包中嘗試了collect gather()spread() ,但是它們不是我想要的方式。 僅供參考,原始表格的尺寸為1000 * 150,因此非常感謝您采用這種繁殖方式。

使用gatherspread將為您提供所需的輸出:

> library(tidyr)
> df1 %>% gather(cols, values, A:C) %>% 
    spread(class, values)
  cols apple banana pear
1    A     1      3    2
2    B     2      2    4
3    C     5      1    2

您甚至可以使用reshape2包中的meltdcast

> library(reshape2)
> dcast(melt(df1), variable ~ class)
Using class as id variables
  variable apple banana pear
1        A     1      3    2
2        B     2      2    4
3        C     5      1    2

將類列轉換為行名,轉置,轉換為數據框,並將行name轉換為name列。

library(magrittr)
library(tibble)

DF %>% 
   column_to_rownames("class") %>% 
   t %>% 
   as.data.frame %>% 
   rownames_to_column("name")

給予:

  name apple pear banana
1    A     1    2      3
2    B     2    4      2
3    C     5    2      1

這是使用轉置的基本R解決方案:

df <- data.frame(A,B,C, class, stringsAsFactors=FALSE)
out <- data.frame(t(df[c("A", "B", "C")]))
out <- cbind(names(df)[1:3], out)
names(out) <- c("name", df$class)
out

  name apple pear banana
A    A     1    2      3
B    B     2    4      2
C    C     5    2      1

演示版

我建議使用

t()

轉置功能。

df <- data.frame(A = c(1,2,3),
B = c(2,4,2), 
C = c(5,2,1), 
class = c('apple', 'pear', 'banana'))

轉置之前,刪除所需的列作為最終數據框中的列名。 在這種情況下,第4列

new_colnames <- df[,4]
df <- df[,-4]

然后轉置df,

df <- t(df)

然后將colnames設置為new_colnames。

colnames(df) <- new_colnames

暫無
暫無

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

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