首页 > 解决方案 > 在R中将(半)长格式更改为宽格式

问题描述

我需要在 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

reshape 不起作用,因为我没有像 letter1 2 3 等这样的时间变量

标签: r

解决方案


使用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")
)

推荐阅读