R:重塑长 => 具有不同值长度的宽

问题描述 投票:0回答:1

我想将以下数据库从长到宽重塑

df_long <- data.frame(
  indiv_id = c(rep(1,2), rep(2,6), rep(3,4)),
  value = c(sample(x = 2), sample(x = 6), sample(x = 4)),
  field_id = c("A", "B", "A", "C", "D", "E", "G", "F", "B", "D", "E", "F")
)


   indiv_id value field_id
1         1     1        A
2         1     2        B
3         2     6        A
4         2     1        C
5         2     5        D
6         2     4        E
7         2     2        G
8         2     3        F
9         3     4        B
10        3     1        D
11        3     2        E
12        3     3        F

我想将其转换为宽格式,如下所示(如果可能的话,使用 R 基本函数)

  indiv1_id  A  B  D  E  F
1         1  1  2 NA NA NA
2         2  6 NA  5  4  3
3         3 NA  4  1  2  3

我看过 acast、spread 等等……但他们都没有成功! 谢谢

r reshape long-format-data wide-format-data
1个回答
0
投票

reshape
基数 R

reshape(
  df_long,
  direction = "wide",
  idvar = "indiv_id",
  timevar = "field_id"
)

给予

  indiv_id value.A value.B value.C value.D value.E value.G value.F
1        1       1       2      NA      NA      NA      NA      NA
3        2       2      NA       5       4       1       6       3
9        3      NA       1      NA       2       4      NA       3
© www.soinside.com 2019 - 2024. All rights reserved.