转置数据框中的n行,R中有很多列

时间:2018-06-20 06:34:45

标签: r transpose

我有一个包含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 

我一直无法找到一种方法来保持前四列的格式。

2 个答案:

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