私はこのように、さまざまなカテゴリによっていくつかのdata.frame
を要約するddply使用:さまざまな.variablesでddplyを使用するにはどうすればよいですか?
# with both group and size being factors/categorical
split.df <- ddply(mydata,.(group,size),summarize,
sumGroupSize = sum(someValue))
これはスムーズに動作しますが、多くの場合、私は、グループの合計で分割する必要があることを意味比率を計算したいです。同じddply
コール内でそのような合計を計算するにはどうすればよいですか?
私はAクラスの観測で観測された観測データのうち、観測された観測データを観測しています。観測データのうち、観測データのサイズを計算する必要があります。 2つのddply呼び出しでこれを行うことができますが、1つの呼び出しをすべて使用する方がより快適になります。そうする方法はありますか?
編集: 私は過度に具体的に尋ねるつもりはありませんでしたが、私はここで人を邪魔していました。だからここに私の特定の問題があります。実際に私は動作する例がありますが、私はそれが本当に素晴らしいとは考えていません。加えて、私は克服する必要がある欠点があります:それは適用で正しく動作しません。
library(plyr)
# make the dataset more "realistic"
mydata <- warpbreaks
names(mydata) <- c("someValue","group","size")
mydata$category <- c(1,2,3)
mydata$categoryA <- c("A","A","X","X","Z","Z")
# add some NA
mydata$category[c(8,10,19)] <- NA
mydata$categoryA[c(14,1,20)] <- NA
# someValue is summarized !
# note we have a another, varying category hence we need the a parameter
calcShares <- function(a, data) {
# !is.na needs to be specific!
tempres1 <- eval(substitute(ddply(data[!is.na(a),],.(group,size,a),summarize,
sumTest = sum(someValue,na.rm=T))),
envir=data, enclos=parent.frame())
tempres2 <- eval(substitute(ddply(data[!is.na(a),],.(group,size),summarize,
sumTestTotal = sum(someValue,na.rm=T))),
envir=data, enclos=parent.frame())
res <- merge(tempres1,tempres2,by=c("group","size"))
res$share <- res$sumTest/res$sumTestTotal
return(res)
}
test <- calcShares(category,mydata)
test2 <- calcShares(categoryA,mydata)
head(test)
head(test2)
わかりましたように、私はこれをさまざまなカテゴリ変数で実行する予定です。この例では2つしかありませんが(カテゴリ、categoryA)、実際にはさらに多くなっています。そのため、関数を使ってapplyを使用するのはすばらしいですが、何とか正しく動作しません。
applytest <- head(apply(mydata[grep("^cat",
names(mydata),value=T)],2,calcShares,data=mydata))
..カテゴリvarの警告メッセージと奇妙な名前(newX [、i])を返します。
私はこれをより上品に行い、b)適用問題を修正するにはどうすればよいですか?
ニースQ.私はいつもあなたが言ったように別のddplyでddplyラップでそれをやったので、これも解決策に興味があります。 'table' +' prop.table' + 'addmargins'はあなたのために働くのでしょうか、あるいはddplyの柔軟性が必要でしょうか? –
そのために 'count'関数を使用しませんか?私の記憶は、ベースRの 'ave'と一緒に使う必要があった' length'の名前の変更であるということです。 –
Hmm。いいです、prop.tableについて知らなかったけど、私はまだddplyの柔軟性を利用することができました。 –