首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从宽到长格式的时变变量的不同数量

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

Stack Overflow用户
提问于 2020-05-20 13:20:44
回答 1查看 149关注 0票数 0

我正在转换从宽到长格式的纵向数据。这样我就能理解“背景中”发生了什么,也明白了它是否真的可能发生。

df1是4波数据的组合,我以前有过full_joined。我有4个波形,有标识符pidp和三个固定变量,我在第一波中插入,然后在第1波中有5个时变变量。

在第二波、第三波和第四波中,只有在第二波、第三波和第四波中才有一个叫做jwbs1_2的变量。

在波1中有5个时变变量,但在第2、3和4波处有6个时变变量,如柱底部所示。

代码语言:javascript
复制
I got the error message

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

我想知道是否有可能在不同的波浪中有不同数量的时变变量,并以长格式使用它们?有办法绕过它吗?

为了说明起见,我插入了下面的变量和我使用的代码。

代码语言:javascript
复制
$ 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
代码语言:javascript
复制
df2 <- reshape(
    data = df1,
    varying = 4:length(df1),
    timevar = "wave",
    sep = "_",
    idvar = "pidp",
    direction = "long"
)  
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-20 14:05:24

对于宽形式的不平衡数据,您可以将丢失的变量jwbs1_1追加到数据框架中,然后再试一次,或者使用tidyr包中的pivot_longer函数。

Base (在第1波中添加缺失变量后进行整形):

代码语言:javascript
复制
df1_bal <- data.frame(append(df1, list(jwbs1_1=NA), after=8))
reshape(df1_bal, ...)

tidyr (pivot_longer)

代码语言:javascript
复制
pivot_longer(df1, cols=-c(pidp, sex, edtype), 
          names_to=c(".value","wave"), names_pattern="(.*)_(\\d)")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61914147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档