【问题标题】:Different amount of time varying variables from wide to long format从宽格式到长格式的不同时变变量
【发布时间】:2020-05-20 13:20:44
【问题描述】:

我正在将 longitduinal 数据从宽格式转换为长格式。这一点让我了解“在后台”发生的事情以及了解它是否真的可能。

df1 是我之前完全加入的 4 波数据的组合。我有 4 个带有标识符 pidp 的 wave 和三个固定变量,我已将它们插入到第一个 wave 中,然后在 wave 1 中有五个时变变量。

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

因此,第 1 波中有五个时变变量,但在第 2、3 和 4 波中有六个时变变量,如帖子底部所示。

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_2
df2 <- reshape(
    data = df1,
    varying = 4:length(df1),
    timevar = "wave",
    sep = "_",
    idvar = "pidp",
    direction = "long"
)  

【问题讨论】:

    标签: r reshape long-integer data-cleaning longitudinal


    【解决方案1】:

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

    Base R(重塑,在第 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)")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-23
      • 2019-08-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多