2012-04-25 20 views
5

私は、異なる集団からの遺伝子型情報を持つ巨大なデータセットを持っています。私は人口別にデータを並べ替えたいが、どのようにしたらよいかわからない。サブセットデータ/最初の7文字に基づいてデータを抽出

私は "pedigree_dhl"で並べ替えたいと思います。次のコードを使用していましたが、エラーメッセージが表示されていました。

newdata <- project[pedigree_dhl == CCB133$*1, ] 

「pedigree-dhl」には、個々の遺伝子型の名前がす​​べて含まれているという問題もあります。列 'pedigree-dhl'の最初の7文字のみが母集団名です。この例では、CCB133です。 CCB133を含むすべての列のデータを抽出したいとRに指示するにはどうすればよいですか?

Allele1 Allele2  SNP_name gs_entry pedigree_dhl 
1  T  T ZM011407_0151  656 CCB133$*1 
2  T  T ZM009374_0354  656 CCB133$*1 
3  C  C ZM003499_0591  656 CCB133$*1 
4  A  A ZM003898_0594  656 CCB133$*1 
5  C  C ZM004887_0313  656 CCB133$*1 
6  G  G ZM000583_1096  656 CCB133$*1 
+2

'substr'では、文字ベクトルの部分文字列を抽出することができます。 'substr'を使用する前に、実際に列が文字ベクトルであり、因子ではないことを確認するか、予期しない結果が生じることがあります。サブセット化のためには、SOに 'Rサブセット'を検索すれば、多くの解答が得られます。 'subset()'関数自体はインタラクティブなセッションには非常に便利ですが、 '['演算子を使うのが望ましい状況があります。 – Chase

答えて

5

あなたはUsing regexp to select rows in R dataframeの答えのようにgrepを検討する必要があります。あなたのデータに適応:

df <- read.table(text=" Allele1 Allele2  SNP_name gs_entry pedigree_dhl 
1  T  T ZM011407_0151  656 CCB133$*1 
2  T  T ZM009374_0354  656 CCB133$*1 
3  C  C ZM003499_0591  656 CCB133$*1 
4  A  A ZM003898_0594  656 CCB133$*1 
5  C  C ZM004887_0313  656 CCB133$*1 
6  G  G ZM000583_1096  656 CCB133$*1", header=T) 

# put into df1 all rows where pedigree_dhl starts with CCB133$ 
p1 <- 'CCB133$' 
df1 <- subset(df, grepl(p1, pedigree_dhl)) 

しかし、あなたの質問は、あなたが7文字の名前を選択するか、単に血統名で行をソートすることができますことを意味し、ソートで一緒にすべての行を維持する方が簡単な場合がありデータフレーム。サブ設定、新しい列の抽出、ソートの3つの操作は、すべて独立して実行できます。

# If you want to create a new column based 
# on the first seven letter of SNP_name (or any other variable) 

df$SNP_7 <- substr(df$SNP_name, start=1, stop=7) 

# If you want to order by pedigree_dhl 
# then you don't need to select out the rows into a new dataframe 

df <- df[ with(df, order(df$pedigree_dhl)), ] 

これはすべて明白かもしれません - 私は完全性のためにこれらを追加しています。

+0

2.14の 'read.table'は、テキストの引数を直接取るようになりました。つまり、' textConnection'の必要はありません。 –

+0

ありがとう@Tyler Rinker;古い習慣は激しく死ぬ。しかし、私はそれを試してみました。私は 'help'を調べて、' file'パラメータがローカルファイルへのパス、テキスト接続、またはURLであることを確認しました。私はこれをやるよりエレガントな方法が好きなので、編集では、代替案を見てうれしいです。 – gauden

+1

あなたのために編集を追加しました。 –

関連する問題