8

私は、さまざまな集団からの遺伝子型情報を含む膨大なデータ セットを持っています。データを人口順に並べ替えたいのですが、方法がわかりません。

「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
4

1 に答える 1

9

Using regexp to select rows in R dataframegrepの回答のように検討することをお勧めします。データに適応:

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)), ]

これらはすべて明白かもしれません。完全を期すために追加しただけです。

于 2012-04-25T16:26:25.573 に答える