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