0

次のデータセットがあります。

df <- data.frame(
  C      = c(1,2,3,1,2,3,1,2,3,1),
  weight = c(1,1.5,2,2,1.5,1,2,1,1.5,2.5),
  time   = c(15,20,30,45,60,15,20,30,45,60)
)

各 C の中央値時間を見つけるために、変数 C によってデータを集計する必要があります。各観測値は、変数「重み」によって重み付けされます。

次のコードで「平均」を加重中央値に置き換える方法はありますか?

output<-aggregate(.~C, data=df, mean, na.rm=TRUE)
4

1 に答える 1

1

bigvisgithubのパッケージに加重中央値関数があります。

library(devtools)
install_github("bigvis")

aggregate複数のベクトル入力を必要とする関数では機能しません。代わりにddplyfromを使用してください。plyr

library(plyr)
ddply(df, .(C), summarise, wm = weighted.median(time, weight))
于 2014-01-23T10:52:22.147 に答える