2012-04-25 24 views
5

Farklı popülasyonlardan genotipik bilgi içeren çok büyük bir veri kümem var. Verileri popülasyona göre sıralamak istiyorum ama nasıl olduğunu bilmiyorum.İlk 7 harfe dayanan veri/veri ayıklama verileri

"pedigree_dhl" ile sıralamak istiyorum. Aşağıdaki kodu kullanıyordum, ancak hata mesajları almaya devam ettim.

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

Sorunum 'soy-dhl bireysel genotiplerin bütün isimleri içerdiğini, aynı zamanda. 'Pedigree-dhl' sütunundaki ilk 7 harf sadece nüfus ismidir. Bu örnekte: CCB133. R'ye, CCB133 içeren tüm sütunların verilerini ayıklamak istediğimi nasıl anlayabilirim?

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', bir karakter vektörünün alt dizelerini çıkarmanızı sağlar. Sütunun aslında bir karakter vektörü olduğundan ve 'substr' kullanmadan önce bir faktör olmadığından emin olmak istersiniz veya beklenmeyen bazı sonuçlar alabilirsiniz. Alt kümeleme için, "R alt kümesi" için SO ara ve çok cevap bulacaksınız. 'Subset()' fonksiyonunun kendisi interaktif oturum için oldukça kullanışlıdır. – Chase

cevap

5

Sen Using regexp to select rows in R dataframe üzerine cevap olarak grep düşünebilir. verilerinize Uyarlanmış:

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

Ama soru şu yedi harfli ismini seçmek için, ya da sadece soy ismiyle satırları sıralamak isteyebilirsiniz manasına gelmektedir ve sıralama yapıldığını hep birlikte satırları tutmak daha kolay olabilir veri çerçevesi. Tüm bu üç işlem: alt-ayar, yeni bir sütun çıkarma ya da sıralama, bağımsız olarak gerçekleştirilebilir.

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

Tüm bunlar açık olabilir - Bunları basitçe tamlık için eklerim.

+0

'read.table' 2.14 itibariyle, bence artık metin argümanını doğrudan alıyor, yani 'textConnection' için gerek yok –

+0

Teşekkürler @Tyler Rinker; eski alışkanlıklar kolay bırakılmıyor. Ancak hiç başarı ile denedim. Ayrıca 'yardım' bölümüne baktım ve 'file' parametresinin bir yerel dosyaya, bir metin bağlantısına veya bir URL'ye giden bir yol olabileceğini gördüm. Bir düzenlemede alternatifleri görmekten mutluyum, çünkü bunu yapmanın daha zarif bir yolunu sevmek istiyorum. – gauden

+1

Düzenlemeyi sizin için ekledim. Sorun için –

İlgili konular