从宽格式到长格式的不同时间变量

Different amount of time varying variables from wide to long format

我正在将纵向数据从宽格式转换为长格式。这就是我了解正在发生的事情 "in the background" 以及它是否真的可能的原因。

df1是我之前full_joined的4波数据的组合。我有 4 个带有标识符 pidp 的波浪和三个固定变量,我已将其插入到第一个波浪中,然后在第一个波浪中有五个随时间变化的变量。

在wave 2,wave 3和wave 4中有一个变量叫做jwbs1_2,它只出现在wave 2,wave 3和wave 4。

所以在波 1 中有五个时变变量,但在波 2、3 和 4 中有六个时变变量,如 post.

底部所示
I got the error message

 Error in reshapeLong(data, idvar = idvar, timevar = timevar, varying = varying,  : 
  'varying' arguments must be the same length

我想知道是否可以在不同的 waves 中使用不同数量的时变变量并以长格式使用它们?有办法解决吗?

出于说明目的,我在下面插入了变量以及我使用的代码

$ pidp
$ sex     
$ edtype
$ jbsat_1
$ sclfsato_1
$ jbsat_1
$ sf12mcs_1
$ scghq1_1
$ jbsat_2
$ sclfsato_2
$ jbsat_2
$ sf12mcs_2
$ scghq1_2
$jwbs1_2
df2 <- reshape(
    data = df1,
    varying = 4:length(df1),
    timevar = "wave",
    sep = "_",
    idvar = "pidp",
    direction = "long"
)  

对于宽格式的不平衡数据,您可以将缺失的变量 jwbs1_1 附加到您的数据框并重试,或者使用 tidyr[ 中的 pivot_longer 函数=22=]包.

Base R(重塑,在 wave 1 中附加缺失变量后):

df1_bal <- data.frame(append(df1, list(jwbs1_1=NA), after=8))
reshape(df1_bal, ...)

tidyr (pivot_longer)

pivot_longer(df1, cols=-c(pidp, sex, edtype), 
          names_to=c(".value","wave"), names_pattern="(.*)_(\d)")