2017-02-07 7 views
1

私は1つの列しか持たないテキストファイルを持っています。連続したテキストファイルをdata.frameに読み込みます。

sample1 

color 12 
length 34 
validity 90 



sample2 

color 15 
length 20 
validity 120 



sample3 

color 34 
validity 79 

サンプル間に3行、サンプルIDとその属性の間に1行あります。また、サンプル3では、長さレコードがありません。

私はそれがどのように見えるように、Rのdata.frameにこのファイルを読みたい:あなたはデータクリーニングの問題を持っている

 sample1 sample2 sample3 
color 12  15  34 
length 34  20  NA 
validity 90  120  79 
+0

あなたのデータの 'dput'を提供してください。 –

+1

@DavidArenburg私はRオブジェクトを持っていません。私はRに読み込みたい.txtファイルしか持っていません。 – Yan

+0

入手しました。試してみましょう 'ライブラリ(data.table); dcast(fread( "test.txt"、fill = TRUE)[!is.na(V2)]、sample1〜paste0( "sample_"、rowid(sample1))) 'おそらく。 –

答えて

0

。ここに私の解決策があります。

"TXT"ファイルをMacの空のテキストエディットドキュメントにコピーして貼り付け、file.txtという名前で保存しました。 "TXT"ファイルに表示されている注文が必要です:

data <- unlist(read.table("file.txt", header=F, sep="\t", stringsAsFactors=F), use.names=F) 
data 

sample_names <- data[grep("sample", data), drop=T] 
sample_names 
## [1] "sample1" "sample2" "sample3" 

color <- data[grep("color", data), drop=T] 
color 
## "color 12" "color 15" "color 34" 

length <- data[grep("length", data), drop=T] 
length #note missing term, and requires manual coding 
## [1] "length 34" "length 20" 

length <- c(length, NA) 
length 
## [1] "length 34" "length 20" NA 

validity <- data[grep("validity", data), drop=T] 
validity 
## [1] "validity 90" "validity 120" "validity 79" 

## Assemble into data.frame: 
assembled_df <- rbind(color, length, validity) 
colnames(assembled_df) <- sample_names #update column names 
assembled_df 
##   sample1  sample2  sample3  
## color "color 12" "color 15"  "color 34" 
## length "length 34" "length 20" NA   
## validity "validity 90" "validity 120" "validity 79" 

コードは一般化できない可能性があります。これは、実際のTXTファイルの外観の問題です。重要なのは、1)自分のデータを知っていること、(2)戦略を考え出していること、(3)それから解決策を学ぶことです。

+0

すぐにお返事ありがとうございました!しかし、一般化可能な解決法があるのか​​どうか疑問に思っていました。これは私がこの質問で作ったおもちゃのサンプルです。しかし、私の実際のデータはさらに汚れています。サンプル名にはパターンがありません(一部は数字のみ、一部は文字+数字です)。したがって、私はgrepを使用することはできません。 – Yan

+0

一般的な解決方法があるはずですが、「汚れた」データには明確なパターンがないと非常に困難です。がんばろう。 –

関連する問題