【问题标题】:Wide to Long with Two sets of Variables to Reshape宽到长,有两组要重塑的变量
【发布时间】:2018-09-07 16:23:06
【问题描述】:

我有一个包含 4 个因变量、6 个自变量和 9 个协变量的数据集。数据集以宽格式排列。

我希望以长格式制作,所以我可以在循环中重复某个过程(lm、plot、...),改变因变量和独立变量,同时保持协变量(在 lm 示例中)。

我的数据如下:

我想要这样:

如果我只有一组变量(仅依赖或仅独立),我知道该怎么做,我会使用 reshape 函数。但是当我有两组变量时我该怎么做呢?我需要创建 24 种不同的 DV 和 IV 组合,同时在每一行中保留所有协变量。

希望得到一些指导。提前谢谢你!

以我的数据形式生成随机数据的代码:

ID = seq(1,5)
DV1 = rnorm(5,0,1)
DV2 = rnorm(5,0,1)
DV3 = rnorm(5,0,1)
DV4 = rnorm(5,0,1)
IV1 = rnorm(5,0,1)
IV2 = rnorm(5,0,1)
IV3 = rnorm(5,0,1)
IV4 = rnorm(5,0,1)
IV5 = rnorm(5,0,1)
IV6 = rnorm(5,0,1)
COV1 = rnorm(5,0,1)
COV2 = rnorm(5,0,1)
COV3 = rnorm(5,0,1)
data = data.frame(ID,DV1,DV2,DV3,DV4,IV1,IV2,IV3,IV4,IV5,IV6,COV1,COV2,COV3)

【问题讨论】:

  • 你能举一个可重复的小例子吗
  • 对数据进行子集化,对reshape 执行两次(或对DVIVCOV 各执行一次),然后在ID 上执行merge。如果你想要一个编码的解决方案,有样本数据会有所帮助。

标签: r reshape


【解决方案1】:

您可以使用reshape2 包的melt 函数和参数id,在该参数中指定在从宽格式到窄格式转换期间要保留的列。请看下面的代码:

set.seed(123)
ID = seq(1,5)
DV1 = rnorm(5,0,1)
DV2 = rnorm(5,0,1)
DV3 = rnorm(5,0,1)
DV4 = rnorm(5,0,1)
IV1 = rnorm(5,0,1)
IV2 = rnorm(5,0,1)
IV3 = rnorm(5,0,1)
IV4 = rnorm(5,0,1)
IV5 = rnorm(5,0,1)
IV6 = rnorm(5,0,1)
COV1 = rnorm(5,0,1)
COV2 = rnorm(5,0,1)
COV3 = rnorm(5,0,1)
data = data.frame(ID,DV1,DV2,DV3,DV4,IV1,IV2,IV3,IV4,IV5,IV6,COV1,COV2,COV3)

library(reshape2)
data_molten <- melt(data, id = c("ID", "DV1", "DV2", "DV3", "DV4", "COV1", "COV2", "COV3"))
head(data_molten)

输出:

  ID         DV1        DV2        DV3        DV4        COV1       COV2       COV3 variable      value
1  1 -0.56047565  1.7150650  1.2240818  1.7869131  0.25331851  1.5164706  0.3796395      IV1 -1.0678237
2  2 -0.23017749  0.4609162  0.3598138  0.4978505 -0.02854676 -1.5487528 -0.5023235      IV1 -0.2179749
3  3  1.55870831 -1.2650612  0.4007715 -1.9666172 -0.04287046  0.5846137 -0.3332074      IV1 -1.0260044
4  4  0.07050839 -0.6868529  0.1106827  0.7013559  1.36860228  0.1238542 -1.0185754      IV1 -0.7288912
5  5  0.12928774 -0.4456620 -0.5558411 -0.4727914 -0.22577099  0.2159416 -1.0717912      IV1 -0.6250393
6  1 -0.56047565  1.7150650  1.2240818  1.7869131  0.25331851  1.5164706  0.3796395      IV2 -1.6866933

【讨论】:

    猜你喜欢
    • 2018-05-05
    • 2014-05-12
    • 1970-01-01
    • 2018-02-17
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 2011-03-20
    相关资源
    最近更新 更多