35904


Rのtidyrでデータクリーニングをしたいと考えています。

データはラベルが付いていないものを読み込んだのでV1~V1998となっており、型はデータフレームで名前はdfです。

[code]

    v1,v2,v3,...,v1998
    1,13,23,...,32
    2,14,26,...,32
    4,14,27,...,38
    5,...
    ...
    354,243,543,...,657
    
[/code]

のようにv1に時間がはいり、V2~はそれぞれの人のデータとなっております。  
これを

[code]

    time,data
    1,13
    2,14
    4,14
    ....
    354,243
    1,23
    2,26
    ....
    
[/code]

のように縦に並べたいと考えています。timeにV1の値が入り、dataにV2~の値が入る形です。

[code]

    df %>% tidyr::gather(key =time,value = data,df[,2:1998])
    
[/code]

などとやってもエラーが出てしまいます。  
どう対処すればよいでしょうか？  
よろしくお願いします。

**追記**  
tidyrでないパッケージ利用でも構いません。（スピードが実用に耐えられればですが…）


CC BY-SA 3.0
2017-06-26T13:56:50.283
35900
2018-06-07T16:27:57.527
2018-06-07T16:27:57.527
12457
12457
question
r tidyverse
tidyrで連番データにデータクリーニング


以下を試してみてください:

[code]

    library(dplyr)
    library(tidyr)
    
    df <- data.frame(
      v1 = 1:5,
      v2 = sample(11:20, 5),
      v3 = sample(21:30, 5),
      v4 = sample(31:40, 5)
    )
    
    df %>% 
      gather(key = person, value = data, -v1)
    
[/code]

`gather()`はwide型データをlong型データに置き換える関数です。keyには「その値(value)がwide型のときどの変数にあったものなのか」を示し，valueはその値を示します。そして残りの引数(...と表現されるもの)には，「valueに流し込む値がある変数」を指定します。

今回の場合，v1が時間で，縦に持っていくのはv2以降の変数ということから，-v1として縦に持っていく変数から除外しています。これにより，v1は残ることとなります。


CC BY-SA 3.0
2017-06-26T23:52:59.367
35904
2017-06-26T23:52:59.367
19063
35900
answer