通过堆叠列和重复其他列来组织用于分析的数据框
Organise a data frame for analysis by stacking columns and repeating others
我正在尝试从 ``olddf. Basically, I want to duplicate and stack columns
Aand
Bto allow for columns
Cand
D```` 获取 newdf
进行堆叠在一个列中。抱歉解释不当,基本上,我将 C
和 D
堆叠到一个列中,需要重复 A
和 B
来解释重复,谢谢。
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
我正在尝试从 ``olddf. Basically, I want to duplicate and stack columns
Aand
Bto allow for columns
Cand
D```` 获取 newdf
进行堆叠在一个列中。抱歉解释不当,基本上,我将 C
和 D
堆叠到一个列中,需要重复 A
和 B
来解释重复,谢谢。
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