2013-06-25 8 views
11

Rには、ヘッダーが上端ではなく左端(または右端)にあり、データが左から右に整理されているファイルを読み取るread.csvのような機能がありますか?水平に整理されたCSVファイルを読む

ので、データは次のようになります。

read.tableread.csvのドキュメントを見てみると
var1,1,2,3,4,5 

、何が飛び出していないようにみえます。これらの関数を使用して表示される最良の選択肢は、read.tableを使用し、列が元のデータの行などである別のテーブルを作成することです。

+0

あなたはどのようにあなたの最小限の2または3行の例を与えることができますテキストデータは見えますか?それぞれの行は 'var1,1,2,3,4,5'のようなものですか? – thelatemail

+0

はい、そうですね。この場合のヘッダーは最も左の列です。 –

+1

*すべての変数が数値の場合は、提案どおりに実行できます。 'x < - read.csv(...); as.character(x [、1])) ' –

答えて

14

のは、あなたのファイルは、「data.csv」と呼ばれ、それが含まれているとしましょう:

var1,1,2,3,4,5,6 
var2,2.1,3.9,4.6,5.2,6.1 
var3,M,F,M,F,M,M 

var1var3は、6つの値を持っていますが、だから、唯一の5 をvar2持って、アイデアは、データを読み取ることで、それを転置してread.csvを使用してください。

read.tcsv = function(file, header=TRUE, sep=",", ...) { 

    n = max(count.fields(file, sep=sep), na.rm=TRUE) 
    x = readLines(file) 

    .splitvar = function(x, sep, n) { 
    var = unlist(strsplit(x, split=sep)) 
    length(var) = n 
    return(var) 
    } 

    x = do.call(cbind, lapply(x, .splitvar, sep=sep, n=n)) 
    x = apply(x, 1, paste, collapse=sep) 
    out = read.csv(text=x, sep=sep, header=header, ...) 
    return(out) 

} 

次に、あなたが行うことができます:

read.tcsv( "data.csv")

var1 var2 var3 
1 1 2.1 M 
2 2 3.9 F 
3 3 4.6 M 
4 4 5.2 F 
5 5 6.1 M 
6 6 NA M 
関連する問題