我正在转换从宽到长格式的纵向数据。这样我就能理解“背景中”发生了什么,也明白了它是否真的可能发生。
df1是4波数据的组合,我以前有过full_joined。我有4个波形,有标识符pidp和三个固定变量,我在第一波中插入,然后在第1波中有5个时变变量。
在第二波、第三波和第四波中,只有在第二波、第三波和第四波中才有一个叫做jwbs1_2的变量。
在波1中有5个时变变量,但在第2、3和4波处有6个时变变量,如柱底部所示。
I got the error message
Error in reshapeLong(data, idvar = idvar, timevar = timevar, varying = varying, :
'varying' arguments must be the same length我想知道是否有可能在不同的波浪中有不同数量的时变变量,并以长格式使用它们?有办法绕过它吗?
为了说明起见,我插入了下面的变量和我使用的代码。
$ pidp
$ sex
$ edtype
$ jbsat_1
$ sclfsato_1
$ jbsat_1
$ sf12mcs_1
$ scghq1_1
$ jbsat_2
$ sclfsato_2
$ jbsat_2
$ sf12mcs_2
$ scghq1_2
$jwbs1_2df2 <- reshape(
data = df1,
varying = 4:length(df1),
timevar = "wave",
sep = "_",
idvar = "pidp",
direction = "long"
) 发布于 2020-05-20 14:05:24
对于宽形式的不平衡数据,您可以将丢失的变量jwbs1_1追加到数据框架中,然后再试一次,或者使用tidyr包中的pivot_longer函数。
Base (在第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)")https://stackoverflow.com/questions/61914147
复制相似问题