将R中的(半)长格式更改为宽

时间:2019-08-21 09:10:33

标签: 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

重塑将无法正常工作,因为我没有如letter1 2 3等的时间变量 只要字母从1开始填充列,字母以什么顺序排列都没有关系 因此在第3位,订单也可以是C D A。

2 个答案:

答案 0 :(得分:0)

使用dplyrtidyr,您可以尝试:

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