如何将这个由堆叠变量组成的数据帧转换为R中每列一个变量的数据帧?(长到宽)

  • 本文关键字:数据帧 变量 一个 转换 r
  • 更新时间 :
  • 英文 :


如果这是重复的,我很抱歉,但我似乎无法找到任何解决方案来解决我的问题。我的问题看起来很简单,但我似乎无法让任何东西给我所需要的输出。

我有一个数据帧,其中所有变量都像这样堆叠:

变量 Old_Value 新值
Var1 A1 A2
Var1 A3 A4
Var1 A5 A6
Var2 B1 B2
Var2 B3 B4
Var2 B5 B6

我会这样做:

library(tibble)
library(tidyr)
tibble(
variable = paste0('Var', rep(1:2, each = 3)),
old_value = c(paste0(rep(c('A', 'B'), each = 3), c(1,3,5))),
new_value = c(paste0(rep(c('A', 'B'), each = 3), c(2,4,6))),
) %>% 
gather('k', 'v', -1) %>% 
unite('tmp', variable, k) %>%
mutate(
tmp2 = rep(1:3, 4)
) %>% 
spread(tmp, v) %>% 
select(-tmp2)

输出:

# A tibble: 3 x 4
Var1_new_value Var1_old_value Var2_new_value Var2_old_value
<chr>          <chr>          <chr>          <chr>         
1 A2             A1             B2             B1            
2 A4             A3             B4             B3            
3 A6             A5             B6             B5

最新更新