【问题标题】:Reshape dataframe with 2 columns [duplicate]用 2 列重塑数据框 [重复]
【发布时间】:2018-07-15 18:43:02
【问题描述】:

我想重塑一个如下所示的数据框:

x   y   z   Date
x1  y1  z1  1
x2  y2  z2  2
x3  y3  z3  3

变成这样:

var  val  Date
x    x1   1
x    x2   2
x    x3   3
y    y1   1
y    y2   2
y    y3   3
z    z1   1
z    z2   2
z    z3   3

我已经尝试过了,但是我这样丢失了日期变量:

cols1<-colnames(y[-ncol(y)]) ## to drop the Date
df_new   <- stack(df, select=c(cols1))

有没有简单的方法来做到这一点?我搜索了论坛(显然有大量的重塑问题),但我找不到一个试图做我需要做的事情的人。

例如,这个论坛问题研究了一个不同的问题。原始数据框的格式不同,所有日期都是单独的列。我的日期只有一列: Reshaping data.frame from wide to long format

【问题讨论】:

  • z1-z3 来自哪里?你能仔细检查你的例子吗?
  • 抱歉,这是个错误,已修复。谢谢。
  • 您应该更好地查看您链接到的论坛页面并尝试不同的解决方案。 melt(df, id = 'Date') 例如给出你需要的输出...
  • 你说得对,我完全错过了。我很抱歉。不过还是谢谢你。 “融化”效果很好!!!
  • 你刚才不是也问过同样的问题吗?

标签: r dataframe reshape


【解决方案1】:
df <- read.table(text="x   y   z   Date
x1  y1  z1  1
x2  y2  z2  2
x3  y3  z3  3", header=TRUE, stringsAsFactors=FALSE)

library(tidyverse)
df %>%
  dplyr::group_by(Date) %>%
  tidyr::gather(var, val, x:z) %>%
  dplyr::ungroup()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-01
    • 2019-05-29
    • 2014-01-31
    • 1970-01-01
    • 1970-01-01
    • 2014-11-09
    相关资源
    最近更新 更多