我正在跟进this的伟大的答案。我想知道是否有一种方法来宽格式我的long_data,以实现我的desired_output如下?我试过:
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
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可能有一种更简洁的方法,但我更喜欢将问题分成两部分,然后将两部分分块。
1条答案
按热度按时间jchrr9hc1#
我认为这有点棘手,因为你有一个变量(score),它随DV和时间变化,还有两个变量(task_type + mot),它们随时间变化,但不随DV变化。处理这个问题的一种方法是分别透视这两个变量,然后将结果连接起来:
结果
使用pivot_wideer_spec可能有一种更简洁的方法,但我更喜欢将问题分成两部分,然后将两部分分块。