5

過去 1 年間、さまざまなことに R を使用してきましたが、利用可能なパッケージと関数の数が多いため、残念ながらまだ初心者です。R を使用すると、最小限のコードでやりたいことを実行できると思いますが、苦労しています。

私がしたいこと:

私は、学生に関するデータを含むおよそ 100 の異なる Excel ファイルを持っています。各 Excel ファイルは異なる学校を表していますが、同じ変数が含まれています。する必要がある:

  1. Excel から R にデータをインポートする
  2. ファイル名を含む各ファイルに変数を追加します
  3. すべてのデータをマージします(観察/行を追加します - 変数を一致させる必要はありません)

複数のデータセットに対してこれを行う必要があるため、これをできるだけ単純かつ簡単に複製できるようにしようとしています。

データはどのように見えるか:

行 1    タイトル
行 2     StudentID Var1 Var2 Var3 Var4 Var5
行 3 11234     1 2011 年 9 月 8 日 343 159-167 32
行 4     11235 2 2011 年 9 月 16 日 112 152-160 12
行 5     11236 1 2011 年 9 月 8 日 325 164 -171 44

行 1 は意味がなく、行 2 には変数名が含まれています。ファイルの行数が異なります。

私がこれまでに持っているもの:

最初は、エクセルからデータをインポートしようとしました。XLSX パッケージを使用すると、これはうまく機能します。

dat <- read.xlsx2("FILENAME.xlsx", sheetIndex=1, 
                  sheetName=NULL, startRow=2, 
                  endRow=NULL, as.data.frame=TRUE, 
                  header=TRUE)

次に、ファイルをマージする方法を理解することに焦点を当てました (これは、ファイル名変数をデータファイルに追加する場所でもあると考えました)。ここで行き詰まりました。

setwd("FILE_PATH_TO_EXCEL_DIRECTORY")
filenames <- list.files(pattern=".xls")
do.call("rbind", lapply(filenames, read.xlsx2, sheetIndex=1, colIndex=6, header=TRUE, startrow=2, FILENAMEVAR=filenames));

ディレクトリを設定し、フォルダー内のすべての Excel ファイル名のリストを作成してから、ファイル名の a 変数を使用して 1 つのステートメントにそれらをマージしようとします。

これを行うと、次のエラーが表示されます。

data.frame(res, ...) のエラー: 引数は異なる行数を暗示しています: 616, 1, 5

lapply のアプリケーションに問題があることはわかっています。startrow がオプションとして認識されず、FILENAMEVAR が、ファイル名を含む列を追加するのではなく、5 つのサンプル ファイル名のリストをマージしようとしています。

次は何?

誰かが私に有用なリソースや機能を紹介してくれたり、これまでのことを批判したり、新しい方向性を教えてくれたりしたら、それは大歓迎です!

4

1 に答える 1

4

コメントを投稿します(bdemerastがタイプミスを拾いました)。xlsx私のマシンでは問題なく動作しないため、ソリューションはテストされていません

FILENAMEVARにシングルを渡す必要がありますread.xlsx2

lapply(filenames, function(x) read.xlsx2(file=x, sheetIndex=1, colIndex=6, header=TRUE, startRow=2, FILENAMEVAR=x))
于 2012-11-01T03:15:06.830 に答える