形状変更を使用して従来の入力データを変換するのに問題があります
私の入力データ:
df <- read.table(textConnection(" Ville POP1999 POP2010 PARC1999 PARC2010
1 Paris 1800000 2200000 150 253
2 Itxassou 1000 1800 0 NA
"))
結果はこのdata.frameになります:
Ville POP1999 POP2010 PARC1999 PARC2010
1 Paris 1800000 2200000 150 253
2 Itxassou 1000 1800 0 NA
このタイプの入力があり、正規表現でcolsplit(reshape2パッケージ)を使用して、次のようにデータフレームをカットしたいと思います。
Ville Date Population Parc
1 Paris 1999 1800000 150
2 Paris 2010 2200000 253
3 Itxassou 1999 1000 0
4 Itxassou 2010 1800 NA
リシェイプ1または2とコルスプリット機能でこれを一列に並べることは可能だと思いますか?
私のIDは"Ville"+ "Date"に等しいので、最初にcolsplitでカットするのは難しいと思います。その後、結果のidcolumをmeldで再利用します:/
あなたは答えのアイデアを持っていますか?
アップデート1:
この問題にいくつかの難しさを追加します。今では数千のカラムがあり、カラムが混在していると想像してください。grepを使用して形状を変更しようとしましたが、現時点では結果がありません。(@kohskeのすばらしい回答に関するコメントを参照してください)
アップデート2:
@kohskeは、このコードを追加することで問題を解決します。
cn <- grep("*[0-9]",names(df),value="TRUE")
reshape(df, varying = cn, direction = "long", sep = "")