[英]Wide to Long with Two sets of Variables to Reshape
我有一個數據集,其中包含4個因變量,6個獨立變量和9個協變量。 數據集以寬格式排列。
我希望采用長格式,因此我可以循環執行某個過程(lm,plot,...),改變因變量和獨立變量,同時保留協變量(在lm示例中)。
我的數據如下所示:
我想要這樣:
如果我只有一組變量(僅依賴或僅依賴),我知道該怎么做,那么我將使用reshape函數。 但是,當我有兩組變量時該怎么辦? 我需要創建DV和IV的24種不同組合,同時在每一行中保留所有協變量。
希望能得到一些指導。 先感謝您 !
用於生成數據形狀的隨機數據的代碼:
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)
您可以使用帶有參數id
的reshape2
包的melt
函數,在其中指定從寬格式到窄格式轉換期間要保留的列。 請參見下面的代碼:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.