我需要在R Studio中将数据集从(半)长格式重塑为宽格式
我的数据集如下:
number letter
1 A
2 B
2 C
3 D
3 C
3 A
我需要将其更改为此:
number letter1 letter2 letter3
1 A
2 B C
3 D C A
重塑将无法正常工作,因为我没有如letter1 2 3等的时间变量 只要字母从1开始填充列,字母以什么顺序排列都没有关系 因此在第3位,订单也可以是C D A。
答案 0 :(得分:0)
使用dplyr
和tidyr
,您可以尝试:
df %>%
group_by(number) %>%
mutate(variable = paste0("letter", row_number())) %>%
spread(variable, letter)
number letter1 letter2 letter3
<int> <chr> <chr> <chr>
1 1 A <NA> <NA>
2 2 B C <NA>
3 3 D C A
答案 1 :(得分:0)
使用dcast()
中的data.table
:
library(data.table)
dcast(df, number ~ paste0("letter", rowid(number)), value.var = "letter")
# number letter1 letter2 letter3
# 1 1 A <NA> <NA>
# 2 2 B C <NA>
# 3 3 D C A
数据
df <- data.frame(
number = c(1L, 2L, 2L, 3L, 3L, 3L),
letter = c("A", "B", "C", "D", "C", "A")
)