通过堆叠列和重复其他列来组织用于分析的数据框

Organise a data frame for analysis by stacking columns and repeating others

我正在尝试从 ``olddf. Basically, I want to duplicate and stack columns AandBto allow for columnsCandD```` 获取 newdf 进行堆叠在一个列中。抱歉解释不当,基本上,我将 CD 堆叠到一个列中,需要重复 AB 来解释重复,谢谢。

olddf <- data.frame('A' = c('Z1','Z2','Z3'), 
           'B' = c(100, 200, 500),
           'C' = c(90, 50, 60),
           'D' = c(NA, 50, NA))

newdf <- data.frame('A' = c('Z1','Z2','Z3','Z1','Z2','Z3'), 
                    'B' = c(100, 200, 500, 100, 200, 500),
                    'CD' = c(90, 50, 60, NA, 50, NA))

tidyverse 解法:

olddf |> 
  pivot_longer(names_to="col", values_to="CD", C:D) |> 
  arrange(col, A) |> 
  select(-col)

输出:

# A tibble: 6 x 3
  A         B    CD
  <chr> <dbl> <dbl>
1 Z1      100    90
2 Z2      200    50
3 Z3      500    60
4 Z1      100    NA
5 Z2      200    50
6 Z3      500    NA