2016-03-21 14 views
-3

Ben 0'dan yüksektir 2 veya numbes kullanılan sonucudur:

sum(!is.na(HD[HD$VAL >= 24, 1])) 
# [1] 53 
sum(!is.na(HD[HD$VAL >= 24, 2])) 
# [1] 53 

hiçbir şey kullanıldığında:

sum(!is.na(HD[HD$VAL >= 24, ])) 
# [1] 9276 
sum(!is.na(HD[HD$VAL >= 24, 0])) 
# [1] 0 

Neden?

örnek Veri geçerli:

[1] 17 NA 18 19 20 15 NA NA 13 1 12 15 12 NA NA 17 15 11 NA NA NA 1 NA NA 17 13 NA 8 15 NA 8 
[32] 16 22 11 14 19 10 NA 14 18 11 NA 8 12 20 NA 8 12 NA NA 6 15 NA 17 13 10 NA NA 21 17 14 NA 
.... 
+0

için &

sum(HD$VAL >==24 & !is.na(HD[,1])) 

ve benzer kullanabilirsiniz. THe 1, 2 seçilen sütunları temsil eder. İlk iki durumda, 'VAL' değerine 24'den büyük sütunlar 1, 2'yi alır. Sonra, "! Is.na" ile mantıksal vektöre dönüşür ve toplamı alırız. Bu durumda, bu sütun 1 veya 2'nin alt kümesinde 53 NA olmayan değeriniz vardır. – akrun

+0

Gösterdiğiniz örnek veriler bir "vektör" gibi görünür ve kullanılan kod bir "matrix" veya "data.frame" içindir. – akrun

+0

"sum (! Is.na (HD $ VAL [HD $ VAL> = 24])) işlevini kullanabileceğinizi düşünüyorum. Eğer sadece –

cevap

3

ikinci endekste bir sayı kullanın, kod sadece bu değerler sadece sütun 1 özetliyor

sum(!is.na(HD[HD$VAL >= 24, 1])) 

bu sütunların değerleri toplayan NA değil. Sütun dizinini boş bıraktığınızda, değerin NA olmadığı tüm sütunlar toplanır.

2

R'da, dizin oluşturma 1'den başlayarak 0'dan başlar. Bu nedenle, sütunları seçmek için 0'ı kullanmak hiçbir şey seçmez ve çıktı olarak 0 alırız.

Sorunun ikinci kısmı için, herhangi bir sütun seçmediğimizde, yani , rhs'lerini boş olarak bırakarak, tüm veri kümesi sütunlarını seçer. 1, 2 seçilen sütunları temsil eder.

İlk iki durumda, 'VAL' değerinin 24'ten büyük olan 1, 2 sütunlarını alt kümeye ayırın. Sonra, mantıksal vektöre! Is.na ile dönüştürüyoruz ve toplamı alıyoruz. Bu durumda, o sütun 1 veya alt grubunda 53 olmayan NA değerlerine sahip 2

yani

sum(!is.na(HD[HD$VAL >= 24, 1])) 

Ancak bu subsetting yapmak gerekmez. Biz hiçbir şey kullanırken, bu bütün veri kümesi geçiyor ikinci sütunda

sum(HD$VAL >==24 & !is.na(HD[,2])) 
İlgili konular