1

Windowsソフトウェアによって生成されたデータ出力があります。これはタブ区切りの rtf ファイルですが、エクスポートすると、データの 1 つの長い列に転送されます。Rを使用してデータフレームに戻し、タブ区切りとしてエクスポートして、データを簡単に分析できるようにしたいと思います。

基本的に区切り文字はありませんが、たとえば、完成したファイルには 7 つの列が必要であることはわかっているので、7 つのエントリが入力された後にデータフレームが新しい行を開始するようにしたいと思います。

説明のために、出力は次のようになります。

>Sample  
>Location  
>Test  
>Mean  
>Stdev  
>Status  
>Points  
>A  
>A1  
>XX1  
>0.034541  
>0.04596  
>UN  
>0  
>B  
>A1  
>XX2  
>0  
>0  
>TA  
>1

私はこれを解析したいと思います:

    >サンプル位置検定平均標準偏差ステータスポイント  
    >A A1 XX1 0.03 0.04 UN 0  
    >B A1 XX2 0 0 TA 1  

これを検索する方法が完全にはわかりませんでしたが、私がやりたいことの最も近い例は、この例にあります:
リストの内容を R の 1 つのファイルに書き込む

しかし、回答をデータに適用する方法、特に幅の設定オプション (完全には従いませんでしたが、列番号に関するものでしょうか?)、capture.output、および私が使用していない 2 つのリスト要素を適用する方法がわかりませんでした。ここでは当てはまらないと思います。

BASH または awk ソリューションにも対応しています。

4

3 に答える 3

4

ここでは、一連の手順を説明します。

  1. 通常どおりファイルを読み込みます

    d = read.table("/tmp/tmp.txt", header=FALSE, stringsAsFactors=FALSE)
    

    これにより、1 列のデータ フレームが得られます。

  2. 次に、行数と列数を変更します。

    d = unlist(d)
    dim(d) = c(7, nrow(d)/7)
    d = t(d)
    ##Or 
    d = matrix(as.matrix(d), ncol=7, byrow=TRUE)
    
  3. 次に、>" 記号を削除します。

    d = gsub(">", "", d)
    

    ここで、">" を何も置き換えません ""

  4. 次に、列見出しを並べ替えます。

    colnames(d) = d[1,]
    d = d[-1,]
    
于 2013-02-20T20:44:07.653 に答える
2

私はあなたがこのようなものが欲しいと思います:

# Read data
x<-read.table(textConnection('>Sample  
>Location  
>Test  
>Mean  
>Stdev  
>Status  
>Points  
>A  
>A1  
>XX1  
>0.034541  
>0.04596  
>UN  
>0  
>B  
>A1  
>XX2  
>0  
>0  
>TA  
>1'),stringsAsFactors=FALSE)
# Convert to matrix
mat<-matrix(as.matrix(x),ncol=7,byrow=TRUE)
# Dump as tab delimited
write.table(mat,'file.tab',sep='\t')
于 2013-02-20T20:37:10.433 に答える
1

他の解決策と同様に、さらに処理があるため、そのままにしておきます。

matrix(gsub('>','',dat$V1),ncol=7,byrow=T)
colnames(dat) <- dat[1,]
> dat <- dat[-1,]
> dat
    Sample Location Test  Mean       Stdev     Status Points
[1,] "A"    "A1"     "XX1" "0.034541" "0.04596" "UN"   "0"   
[2,] "B"    "A1"     "XX2" "0"        "0"       "TA"   "1"   
于 2013-02-20T20:37:28.713 に答える