4

次のようなデータをマージできますか

name,#797,"Stachy, Poland"
at_rank,#797,1
to_center,#797,4.70
predicted,#797,4.70

2 番目の列によると、最初の列を列名として使用しますか?

     name             at_rank to_center predicted
#797 "Stachy, Poland" 1       4.70      4.70

リクエストに応じて、データの全セット: http://sprunge.us/cYSJ

4

3 に答える 3

2

データを読み込む最初の問題は、コンマを含む文字列が引用符で囲まれている場合 (そうであるように思われます) は問題になりません。引数で使用read.csvすると、header=FALSE共有したデータでうまくいきます。(もちろん、データ ファイルにヘッダーがある場合は、その引数を削除します。)

そこから、いくつかのオプションがあります。ここに2つあります。

  1. reshape(ベースR)はこれでうまく機能します:

    myDF <- read.csv("http://sprunge.us/cYSJ", header=FALSE)
    myDF2 <- reshape(myDF, direction="wide", idvar="V2", timevar="V1")
    head(myDF2)
    #    V2                V3.name V3.at_rank V3.to_center V3.predicted
    # 1  #1                Kitoman          1         2.41         2.41
    # 5  #2                Hosaena          2         4.23         9.25
    # 9  #3 Vinzelles, Puy-de-Dôme          1         5.20         5.20
    # 13 #4     Whitelee Wind Farm          6         3.29         8.07
    # 17 #5    Steveville, Alberta          1         9.59         9.59
    # 21 #6        Rocher, Ardèche          1         0.13         0.13
    
  2. このreshape2ような場合にもパッケージは役立ちます。構文が単純になり、出力も少し「きれい」になります(少なくとも変数名に関して)。

    library(reshape2)
    myDFw_2 <- dcast(myDF, V2 ~ V1)
    # Using V3 as value column: use value.var to override.
    head(myDFw_2)
    #       V2 at_rank                                       name predicted to_center
    # 1     #1       1                                    Kitoman      2.41      2.41
    # 2    #10       4                            Icaraí de Minas      6.07      8.19
    # 3   #100       2        Scranton High School (Pennsylvania)      5.78      7.63
    # 4  #1000       1                  Bat & Ball Inn, Clanfield      2.17      2.17
    # 5 #10000       3                                     Tăuteu      1.87      5.87
    # 6 #10001       1 Oak Grove, Northumberland County, Virginia      5.84      5.84
    
于 2012-12-05T18:35:01.710 に答える
1

reshapeHadley のパッケージを見てください。私の理解が正しければ、データをロングからワイドにピボットしているだけです。

于 2012-12-05T18:20:26.680 に答える
0

この場合、実際に行う必要があるのは、転置し、data.frame にキャストし、colnames を最初の行に設定してから、最初の行を削除することだけだと思います。data.frame への引数の組み合わせによって最後のステップをスキップすることは可能かもしれませんが、現時点ではそれらが何であるかはわかりません。

于 2012-12-05T18:27:14.140 に答える