我有一个包含6个变量和973个观测值的数据框。第五列具有四个不连续的字符条目,最后一列具有相应的数值。下面是数据示例:
year month gear area code value
2018 1 YH 678 GEF 0.8
2018 1 YH 678 KID 1.7
2018 2 YH 678 KID 1.2
2017 3 JK 678 LKA 1.4
2017 3 JK 678 DJN 0.9
2017 3 JK 679 DJN 0.5
2018 7 JK 689 GEF 0.3
我想将第五列中的代码设置为列标题,并在每行中具有它们对应的值,以重新排列如下:
year month gear area GEF KID LKA DJN
2018 1 YH 678 0.8 1.7
2018 2 YH 678 1.2
2017 3 JK 678 1.4 0.9
2017 3 JK 679 0.5
2018 7 JK 680 0.3
我一直无法找到一种方法来保持前四列的格式。
答案 0 :(得分:1)
您需要从“长”格式转到“宽”格式:
library(tidyverse)
df_wide <- spread(df, code, value)
答案 1 :(得分:0)
df <- read.table(text = "
year month gear area code value
2018 1 YH 678 GEF 0.8
2018 1 YH 678 KID 1.7
2018 2 YH 678 KID 1.2
2017 3 JK 678 LKA 1.4
2017 3 JK 678 DJN 0.9
2017 3 JK 679 DJN 0.5
2018 7 JK 689 GEF 0.3", header = T)
reshape(df, v.names = "value", timevar = "code", direction = "wide", idvar = c("year", "month", "gear", "area"))
year month gear area value.GEF value.KID value.LKA value.DJN
1 2018 1 YH 678 0.8 1.7 NA NA
3 2018 2 YH 678 NA 1.2 NA NA
4 2017 3 JK 678 NA NA 1.4 0.9
6 2017 3 JK 679 NA NA NA 0.5
7 2018 7 JK 689 0.3 NA NA NA