【发布时间】:2023-12-04 04:29:01
【问题描述】:
编辑:
经过进一步检查,这个数据集比我之前认为的要疯狂得多。
值已封装在列名中!
我的数据框如下所示:
| ID | Year1_A | Year1_B | Year2_A | Year2_B |
|----|---------|---------|---------|---------|
| 1 | a | b | 2a | 2b |
| 2 | c | d | 2c | 2d |
我正在寻找一种方法来重新格式化它:
| ID | Year | _A | _B |
|----|------|-----|-----|
| 1 | 1 | a | b |
| 1 | 2 | 2a | 2b |
| 2 | 1 | c | d |
| 2 | 2 | 2c | 2d |
下面的答案很好,而且效果很好,但问题是数据框需要更多的工作——可能会以某种方式分散开来,以便每行有 3 列。
我最好的想法是执行merge(df, df, by="ID"),然后过滤掉不需要的行,但这很快就会变得笨拙。
df <- data.frame(ID = 1:2, Year1_A = c('a', 'c'), Year1_B = c('b','d' ), Year2_A = c('2a', '2c'), Year2_B = c('2b', '2d'))
【问题讨论】:
-
在下面答案的
Year列上应用separate,然后使用spread,即df %>% separate(Year, c("Year", "Part")) %>% spread(Part, value)