R 将列变量拆分为新列

R 将列变量拆分为新列,r,R,我发现了一个数据集,它设置为每个样本占用若干行,每一行对应一个特定变量(类型),如下所示: 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 ... 我需要像这样重新排列它,为columnType中的每个变量创建新列,并删除%列,使用它的

我发现了一个数据集,它设置为每个样本占用若干行,每一行对应一个特定变量(
类型
),如下所示:

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
...
我需要像这样重新排列它,为column
Type
中的每个变量创建新列,并删除
%
列,使用它的条目填充新列:

ID Lat Lon A  B  C
01 yy1 xx1 30 45 25
02 yy2 xx2 10 60 30
03 yy3 xx3 15
...
你们有谁知道怎么做吗?非常感谢您的帮助

您可以使用:

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\u-wide
可以执行以下操作:

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