【发布时间】:2021-09-06 15:27:06
【问题描述】:
我有一个大致如下所示的 Dataframe:
my_data <- tribble(
~Main, ~VAR1a, ~VAR1b, ~VAR1c, ~VAR2a, ~VAR2b, ~VAR2c,
"A", "B", "C", "D", 1, 1, 1,
"B", "A", "D", "", 1, 2, NA,
"C", "D", "A", "", 2, 1, NA
)
# A tibble: 3 x 7
Main VAR1a VAR1b VAR1c VAR2a VAR2b VAR2c
<chr> <chr> <chr> <chr> <dbl> <dbl> <dbl>
1 A B C "D" 1 1 1
2 B A D "" 1 2 NA
3 C D A "" 2 1 NA
我想根据VAR1a、VAR1b 和VAR1c 将这个数据框旋转更长的时间。
这很容易做到:
my_data %>%
pivot_longer(names_to = c("VAR1"),
cols = c("VAR1a", "VAR1b", "VAR1c"))
# A tibble: 9 x 6
Main VAR2a VAR2b VAR2c VAR1 value
<chr> <dbl> <dbl> <dbl> <chr> <chr>
1 A 1 1 1 VAR1a "B"
2 A 1 1 1 VAR1b "C"
3 A 1 1 1 VAR1c "D"
4 B 1 2 NA VAR1a "A"
5 B 1 2 NA VAR1b "D"
6 B 1 2 NA VAR1c ""
7 C 2 1 NA VAR1a "D"
8 C 2 1 NA VAR1b "A"
9 C 2 1 NA VAR1c ""
然而,我的问题是,VAR2a、VAR2b 和 VAR2c 列与 VAR1a、VAR1b 和 VAR1c 直接相关(因此,变量编号后面的字母显示协会)。例如,VAR2a 是Main 分配给VAR1a 的值等等。
理想情况下,我希望有这样的东西:
# A tibble: 9 x 4
Main value VAR1 VAR2
<chr> <chr> <chr> <dbl>
1 A "B" VAR1a 1
2 A "C" VAR1b 1
3 A "D" VAR1c 1
4 B "A" VAR1a 1
5 B "D" VAR1b 2
6 B "" VAR1c NA
7 C "D" VAR1a 2
8 C "A" VAR1b 1
9 C "" VAR1c NA
我不知道如何使用pivot_longer() 来做到这一点,或者是否甚至可以使用 tidyverse。
【问题讨论】: