【问题标题】:Is it possible to transform a data.frame in a vector in R是否可以在 R 中的向量中转换 data.frame
【发布时间】:2016-07-21 22:36:35
【问题描述】:

我有 19 个数据帧,持续 19 个周期。每个 data.frame 行包含一个观察值,每列包含一个变量。我想连续转换 19 个 data.frame 中的每一个以获得时间序列。

obs <- LETTERS[1:3]
Var1 <- (2:4)
Var2 <- (9:7)

April2014 <- data.frame(obs, Var1, Var2)

TimeSerie.April2014 <- data.frame(OBS = "2014/04/01",
                                  AVar1 = April2014[1,2],
                                  AVar2 = April2014[1,3],
                                  BVar1 = April2014[2,2],
                                  BVar1 = April2014[2,3],
                                  CVar1 = April2014[3,2],
                                  CVar2 = April2014[3,3])

这是一个更简单的例子,我想从 April2014 到 TimeSeries.April2014,所以我可以加入 19 个周期中的每一个来获得一个时间序列。

附:对不起我的问题的粗略形式,这是我的第一个堆栈溢出问题。如果您对配方有任何建议,请随时分享。

【问题讨论】:

  • 你能显示你想要的数据的输出样本吗?

标签: r dataframe time-series


【解决方案1】:

对于每个数据框dat,可以使用

as.numeric(t(dat[,-1]))

得到你想要的向量。如果您有 19 个数据框,则应重复此操作 19 次。如果您的所有数据框都在一个大列表large_list 中,那么使用sapply 将为您完成所有工作:

t(sapply(large_list, function (dat) as.numeric(t(dat[,-1]))))

【讨论】:

    【解决方案2】:

    obs中的字母有必要吗?如果您只想读取行中的数字并将它们放在一个长向量中,这可能是一个简短的答案,可以很好地扩展到更大的数据集:

    Var1 <- (2:4)
    Var2 <- (9:7)
    April2014 <- data.frame(Var1, Var2)
    
    result <- unlist(data.frame(t(April2014)))
    print(result)
    

    【讨论】:

      猜你喜欢
      • 2017-03-14
      • 2013-01-16
      • 1970-01-01
      • 1970-01-01
      • 2021-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多