2011-07-28 27 views
9

Verilerimi toplamak için ddply kullanıyorum ancak çıktı veri çerçevesine sütun adları atamanın zarif bir yolunu bulamadım. Şu anda ddply toplanmış sütun adları

yapıyorum:

agg_data <- ddply(raw_data, .(id, date, classification), nrow) 
names(agg_data)[4] <- "no_entries" 

ve bu

agg_data <- ddply(agg_data, .(classification, date), colwise(mean, .(no_entries))) 
names(agg_data)[3] <- "avg_no_entries" 

bunu yapmak için daha iyi, daha zarif bir yolu var mı?

agg_data <- ddply(raw_data, .(id, date, classification), summarise, "no_entries" = nrow(piece)) 

veya çalışmıyor length(<column_name>)nrow(piece) eğer kullanabilirsiniz:

+0

Ayrıca, 'count' – hadley

cevap

8

Sen summarise kullanabilirsiniz. Örneğin, burada herkes tarafından çalıştırılabilir olmalıdır bir örnek: Joshua yorumlarla

ddply(baseball, .(year), summarise, newColumn = nrow(piece)) 

veya

ddply(baseball, .(year), summarise, newColumn = length(year)) 

DÜZENLEME

Ya da, tüm kapaklar versiyonu NROW kontrol yapar sen.

+1

'NROW''a bakmak isteyebilirsiniz. –

+0

@Joshua - Vay, teşekkürler, bu konuda bilmediğime inanamıyorum ... – joran

+1

güzel çalışıyor; 'Parça' değişkeninin farkında değildim. Kolon fonksiyonunu kullandığımda nasıl çalıştığını biliyor musunuz? Yukarıdaki soruya ikinci bir örnek ekledim. – behas

9

olarak, çok kullandığım jenerik biçimidir: my ddply tablolara

ddply(raw_data, .(id, date, classification), function(x) data.frame(no_entries=nrow(x)) 

Ben anonim işlevleri kullanabilirsiniz hemen her zaman bu nedenle yukarıdaki deyim anonim fonksiyonları ile de kafesleri. Bu, nrow() gibi bir işlevi ifade etmenin en özlü yolu değil, çoklu argümanları ilettiğim işlevlerle, çok beğendim.

İlgili konular