后续:将长格式 Dataframe 转换为单行宽格式 Dataframe

eanckbw9  于 2022-12-20  发布在  其他
关注(0)|答案(1)|浏览(109)

我正在跟进this的伟大的答案。我想知道是否有一种方法来宽格式我的long_data,以实现我的desired_output如下?
我试过:

pivot_wider(long_data, names_from = c(DV, time),values_from = c(score, task_type, mot), names_glue = "{.value}_{DV}_T{time}")

但没有成功。
x一个一个一个一个x一个一个二个x

jchrr9hc

jchrr9hc1#

我认为这有点棘手,因为你有一个变量(score),它随DV和时间变化,还有两个变量(task_type + mot),它们随时间变化,但不随DV变化。处理这个问题的一种方法是分别透视这两个变量,然后将结果连接起来:

library(tidyverse)
left_join(
  select(long_data, -task_type, -mot) %>%
    pivot_wider(names_from = c(DV, time), names_glue = "DV_{DV}_T{time}", 
               values_from = score),
  distinct(long_data, class, sub, order,time, task_type, mot) %>%
    pivot_wider(names_from = time, values_from = c(task_type, mot))
)

结果

Joining with `by = join_by(class, sub, order)`
# A tibble: 1 × 11
  class   sub order DV_ac_T1 DV_bc_T1 DV_ac_T2 DV_bc_T2 task_type_1 task_type_2 mot_1 mot_2
  <int> <int> <chr>    <int>    <int>    <int>    <int> <chr>       <chr>       <dbl> <dbl>
1     1     1 s-c          1        2        3        4 simple      complex       1.5   0.2

使用pivot_wideer_spec可能有一种更简洁的方法,但我更喜欢将问题分成两部分,然后将两部分分块。

相关问题