【问题标题】:How to construct a data.frame with name for rows and columns?如何构造一个带有行和列名称的data.frame?
【发布时间】:2020-07-21 21:26:48
【问题描述】:

我可以使用以下代码构造一个data.frame

library(tidyverse)
library(lubridate)
DF <- data.frame(Date = seq(as.Date("2001-03-01"), to= as.Date("2001-05-31"), by="day"),
                     A = runif(92, 0,10),
                     D = runif(92,5,15),
                     Z = runif(92,3,15))

但是,我想在下面的figure 中构造一个data.frame,其中columns (I.e., 1:2 or 1:5)rows (I.e., A, Z etc) 的名称应该像我所拥有的那样,但其中的值可以是random .我正在尝试提出reproducible 的问题,但想先让我的data.frame 正确。

【问题讨论】:

  • 列名是什么1:21:5
  • 1:2, 1:5,1:10 等是列名
  • 从例子看不清楚
  • 你需要DF %&gt;% pivot_longer(cols = -Date) %&gt;% pivot_wider(names_from = Date, values_from = value)

标签: r dataframe tidyverse


【解决方案1】:

如果我们想转置数据集,在 tidyverse 中,我们将整形为“长”格式,然后用不同的名称列整形回“宽”

library(dplyr)
library(tidyr)
DF %>% 
      pivot_longer(cols = -Date) %>%
      pivot_wider(names_from = Date, values_from = value)

【讨论】:

  • 您的回答并没有完全回答我的问题,但给了我其他好主意,可以帮助我发布可重现的问题。谢谢。
  • @Hydro 通过阅读您的问题,我假设它不是预期的可重现示例,因为 1:21:5 未显示为值
【解决方案2】:

我们可以尝试使用reshape2::recast 进行整形。

library(reshape2)
recast(DF, id.var = 1, variable ~ Date)

但是,这会将每个日期作为单独的列提供给我们;在没有可重复的例子的情况下,这是我们所能提供的帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    • 2017-03-14
    • 2023-01-14
    • 2020-08-19
    • 1970-01-01
    相关资源
    最近更新 更多