将列变量拆分为新列

  • 本文关键字:新列 拆分 变量 r
  • 更新时间 :
  • 英文 :


一个数据集找到了它的方式,每个样本都占据许多行,每个行都用于某个变量(Type(,如下所示:

ID Lat Lon Type %
01 yy1 xx1 A    30    
01 yy1 xx1 B    45
01 yy1 xx1 C    25
02 yy2 xx2 A    10
02 yy2 xx2 B    60
02 yy2 xx2 C    30
03 yy3 xx3 A    15
...

我需要像这样重新排列它,为列Type中的每个变量创建新列并删除%列,使用它的条目填充新列:

ID Lat Lon A  B  C
01 yy1 xx1 30 45 25
02 yy2 xx2 10 60 30
03 yy3 xx3 15
...

你们中的任何一个R向导知道如何做到这一点吗?非常感谢任何帮助!

您可以使用:

reshape(df,dir="wide",timevar = "Type",idvar = c("ID","Lat","Lon"))
ID Lat Lon val.A val.B val.C
1  1 yy1 xx1   30   45   25
4  2 yy2 xx2   10   60   30
7  3 yy3 xx3   15   NA   NA

或者使用tidyr中的pivot_wider您可以执行以下操作:

library(tidyr)
pivot_wider(df,id_cols = c("ID","Lat","Lon"),names_from = "Type",values_from = "val")
# A tibble: 3 x 6
ID Lat   Lon       A     B     C
<int> <fct> <fct> <int> <int> <int>
1     1 yy1   xx1      30    45    25
2     2 yy2   xx2      10    60    30
3     3 yy3   xx3      15    NA    NA

DF:

df
ID Lat Lon Type val
1  1 yy1 xx1    A 30
2  1 yy1 xx1    B 45
3  1 yy1 xx1    C 25
4  2 yy2 xx2    A 10
5  2 yy2 xx2    B 60
6  2 yy2 xx2    C 30
7  3 yy3 xx3    A 15

最新更新