2009-08-07 36 views
9

Veri çerçevesinde sahip olduğum bazı verileri normalleştirmeye çalışıyorum. Ben her değeri alıp ortalama ve değer yaşıyor sütunun standart sapma ile birlikte pnorm işlevi aracılığıyla çalıştırmak isteyen döngüler kullanarak, burada yapmak istediğim şeyi yazabilir gibi olacaktır:.Veri çerçevesinin sütunlarına pismeyi uygulama

#example data 
hist_data <- data.frame(matrix(rnorm(200,mean=5,sd=.5),nrow=20)) 

n <- dim(hist_data)[2] #columns=10 
k <- dim(hist_data)[1] #rows =20 

#set up the data frame which we will populate with a loop 
normalized <- data.frame(matrix(nrow = nrow(hist_data), ncol = ncol(hist_data))) 

#hot loop in loop action 
for (i in 1:n){ 
    for (j in 1:k){ 
     normalized[j,i] <- pnorm(hist_data[j,i], 
           mean = mean(hist_data[,i]), 
           sd = sd(hist_data[,i])) 
    } 
} 
normalized 

Görünüşe göre, R'de bunu yapmanın kullanışlı bir dandy vektör yolu olmalı. zaman hüsran

#trouble ahead 
hist_data <- data.frame(matrix(rnorm(200, mean = 5,sd = .5), nrow=10)) 
normalized <- apply(hist_data, 2, pnorm, mean = mean(hist_data), sd = sd(hist_data)) 
normalized 

Much beklediğim üretmek ETMEZ: Öyle uygulamak işlevini kullanarak çalıştı zeki olduğunu düşünüyorum. Çıkışın sol üst ve alt sağ öğeleri doğrudur, ama bu kadar. Öyleyse hayatımı nasıl özümseyebilirim?

İkinci kod bloğumun gerçekte ne yaptığını bana söylerseniz bonus puanları. Benim için hala bir gizem. :)

+0

yapmaya çalıştığın şey hakkında bir şey cevap veremez adam çok hayır istatistikler değilim, kelime satırlar ve sütunlar ters çevrilir yorumlar. Ayrıca, sütunları ve satırları tutmak için n ve k değişkenlerini tanımlarsınız, sonra bunları matris komutunda kullanamazsınız. Bunu temizlemek isteyebilir, böylece diğerleri karışmaz. –

+0

ifadesinde geriye doğru iyi bir nokta. Fakat n ve k için olduğu gibi, "(i: 1: n) için" ve "için (j in 1: k)" –

+0

Sağda kullanılır. O ikinci kısmı kaçırdı. İyi yazı! –

cevap

6

Sen istiyorum:

normalize <- apply(hist_data, 2, function(x) pnorm(x, mean=mean(x), sd=sd(x))) 

sorun pnorm içine tek tek sütunda geçen değil ortalama & sd hem içine hist_data tüm olmamız. Ben heyecan belirtildiği gibi

, ben gerçekte örnek kodda :)