从宽格式到长格式的不同时间变量
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)")
我正在将纵向数据从宽格式转换为长格式。这就是我了解正在发生的事情 "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)")