我正在尝试重塑我的数据框架。我的数据位于长列中,我需要将这些数据分散到同一行但新的列中,如您在上面看到的。
我遇到的主要问题之一是创建新列。我最终将创建近 300 个新专栏。在我的具体问题中,我将有 A1、A2、一直到 A23,与其他变量相同,因此手动初始化列似乎不可行。
有没有办法可以循环或使其成为创建列并重塑数据框的函数?
| Column A | Column B |
| -------- | -------- |
| Cell 1 | Cell 2 |
| Cell 3 | Cell 4 |
| Cell 5 | Cell 6 |
| Column A | Column B | Column A1 | Column B1 | Column A2| Column B2|
| -------- | -------- | --------- | --------- | ---------| ---------|
| Cell 1 | Cell 2 | Cell 3 | Cell 4 | Cell 5 | Cell 6 |
df$A1 <- NA #Initializing the new column
df$A1[1] <- df$A[2] #Setting the value in A row 2, to A1 row 1.
我们可以这样做。主要功能是创建
id
列并在转为长格式后进行分组:
library(dplyr)
library(tidyr)
df %>%
mutate(id = row_number()) %>%
pivot_longer(-id) %>%
mutate(name = paste(name, id), .keep = "unused") %>%
pivot_wider(names_from = name, values_from = value)
`ColA 1` `ColB 1` `ColA 2` `ColB 2` `ColA 3` `ColB 3`
<chr> <chr> <chr> <chr> <chr> <chr>
1 Cell 1 Cell 2 Cell 3 Cell 4 Cell 5 Cell 6