2016-04-13 11 views
0

bir değişken kullanarak her sütun için koşulların Ar bir dataframe subsetting:Şuna benzer vs. Tavşan, Kedi, gibi hayvanların sonra R bir dataframe var adlandırılmış sütunlarla ("Hayvanları" diyoruz sağlar)

| Rabbit | Cat | Frog | Cow | Dog | 
|--------|-----|------|-----|-----| 
| 0  | 1 | 1 | 0 | 1 | 
| 0  | 0 | 3 | 1 | 4 | 
| 2  | 1 | 0 | 0 | 0 | 

Listede yüzlerce satır var ve daha fazla hayvan (sütun) var.

Ben Tavşan> 0.

İlk denedim Hayvanlarda sadece satır altkümelenir Tavşanlar dataframe istiyorum onun sayı Örneğin 0'dan büyük olduğu her bir hayvan için bu dataframe alt kümelerini almak istiyorum değişken "türler" oluşturmak için:

Rabbits <- filter(Animals, species >= 1) 

Bu kel etmedi: Sonra

species <- "Rabbit" 

, ben dplyr en filtreyi() kullanarak Hayvanlar veri çerçevesini subsetine çalıştı çünkü filtre(), "Rabbit" adlı "tür" adlı bir sütun aramaya çalışıyordu.

"Türler" değişkeni yarattım çünkü tüm hayvan adlarımın bir vektörünün içinden geçerek ve bunları veri tabanlarına dönüştürerek süreci otomatikleştirmeyi umuyorum.

Buna daha verimli bir yaklaşım var mı?

R için çok yeni olduğum için herhangi bir ELI5 açıklaması takdir edilecektir. Teşekkür ederim!

cevap

1

[] sözdizimini kullanarak bir sütuna ad ile erişebilirsiniz.

toKeep <- Alimals[species] >= 1 

ve sonra

Rabbit <- Animals[toKeep,] 
+0

Hızlı cevap için teşekkürler! İstediğim şeye yakın, ama sorun Tavşanda tavşan olarak bir değişken kullanmak istiyorum: Tavşan> = 1. Yani Tür> = 1 istiyorum, burada türler <- "Tavşan". Ben tür değişkenini kullanmak istiyorum çünkü bu şekilde tüm hayvanlara bakmayı umuyorum. Mümkün mü? Teşekkürler! – hpy

+1

diğer çözüm, verilerinizi dönüştürmek için reshape2 paketini kullanmaktır, böylece yalnızca iki sütununuz vardır: biri hayvanla (tavşan, kedi vb ...) ve diğeri hayvan sayısı. – mb14

+0

Güncellenen cevap için teşekkürler, işe yaradı! – hpy

1

İşte sütunlara göre her alt küme geçirilen data.frames bir listesini oluşturan bir yolu şudur:

datasets <- lapply(colnames(mtcars), function(v) subset(mtcars, mtcars[,v] > 0)) 

Sadece değişkeni türlere colnames(mtcars) değiştirmek, ve dataframe'iniz için mtcars.

+0

Bunun için teşekkür ederim. Dürüst olmak gerekirse, uygulama işlevinin ailesi hakkında hala gerçekten gerginim, hangisinin kullanılacağını veya nasıl kullanılacağını asla anlayamıyorum. Bunun üzerinde daha fazla çalışmaya ihtiyaç duyacağım. – hpy

+1

Öğrenmeye değer! Kullanmak ve denemek için güvenli fonksiyonlardır. lapply listelerinde iyi çalışır (hangi data.frames). Bence daha sonra 'atama' kullanarak daha güvenli bir yol. – Zelazny7

+0

Teşekkürler @ Zelazny7! Bu işlevler için bazı iyi ELI5 girişlerini aramaya gideceğim ve belki de bazı alıştırmalar bulmaya çalışacağım. – hpy

İlgili konular