【问题标题】:Reshaping Dataframe?重塑数据框?
【发布时间】:2015-10-07 15:37:37
【问题描述】:

我有一个看起来像这样的数据框:

X1     variables   data
2.6    X2          2.5
       X3          2.9

我怎样才能把它重塑成这样:

variables    data
X1           2.6
X2           2.5
X3           2.9

谢谢!

【问题讨论】:

  • 您好!请分享您迄今为止的工作。

标签: r dataframe reshape


【解决方案1】:

你可以从data.table使用melt

  library(data.table)#v1.9.5+
  melt(setDT(df1), id.var='variables', na.rm=TRUE, value.name='data')[
    variable!='data',  variables:= variable][,variable:=NULL][]
  #    variables data
  #1:        X1  2.6
  #2:        X2  2.5
  #3:        X3  2.9

数据

 df1 <- structure(list(X1 = c(2.6, NA), variables = c("X2", "X3"),
  data = c(2.5, 
  2.9)), .Names = c("X1", "variables", "data"), class = "data.frame", 
  row.names = c(NA, -2L))

【讨论】:

    【解决方案2】:
    first_row <- c(names(df1)[1], (df1[, 1][1]))
    df1 <- df1[, 2:3 ]
    df2 <- rbind(first_row, df1)
    
    df2
    #  variables data
    #        X1  2.6
    #        X2  2.5
    #        X3  2.9
    

    【讨论】:

    • 当然可以按字面意思移动,目标是写一个不用直接引用也能做到的表达式。
    • OP 没有具体说明,尽管它是暗示的...... :)
    猜你喜欢
    • 2013-01-27
    • 2019-05-29
    • 2020-02-25
    • 2014-03-10
    相关资源
    最近更新 更多