1. ホーム
  2. r

[解決済み] reshape が時変の変数名を推測できない場合、r でデータを再形成する。

2022-02-09 17:39:15

質問

1500以上の列を持つワイドフォームのデータセットがあります。多くの変数が繰り返されているので、ロングフォームに再形成したいと思います。しかし、Rはエラーを投げます。

Error in guess(varying) : 
  Failed to guess time-varying variables from their names

これをおもちゃの例で理解しようとすると、次のようになります。

u<-data.frame(id=1:100,f.1=rnorm(100),u.1=rnorm(100),i.1=rnorm(100),f.2=rnorm(100),u.2=rnorm(100),i.2=rnorm(100),
                  f.3=rnorm(100),u.3=rnorm(100),i.3=rnorm(100))

reshape(u,varying=2:10,direction="long")

は正常に動作します。しかし、私のデータは、より多くのように見えます。

u<-data.frame(id=1:100,f1=rnorm(100),u1=rnorm(100),i1=rnorm(100),f2=rnorm(100),u2=rnorm(100),i2=rnorm(100),
              f3=rnorm(100),u3=rnorm(100),i3=rnorm(100))

reshape(u,varying=2:10,direction="long")

で、ここが迷うところです。変数名を変更する(これは疲れる)以外に、これをどうすればいいか、何かいいアイデアがあれば教えてください。

どのように解決するのですか?

を追加します。 v.names 引数を指定します。

reshape(u,varying=2:10,direction="long", v.names=c("f", "u", "i"))
    id time          f          u             i
1.1  1    1  1.7821678  0.5144692  0.0006889928
2.1  2    1 -0.5036801  1.8242030  0.9695553817
3.1  3    1  1.1857706  0.6469423  0.6775602175
4.1  4    1 -0.5759202 -1.0349980  0.7183451146
5.1  5    1 -2.3559773  0.8598020  0.5506339475
6.1  6    1 -0.8047651 -1.4768172 -0.3667918383
...