2016-11-27 3 views
1

simplebootパッケージ(https://cran.r-project.org/web/packages/simpleboot/index.html)を使用して信頼区間を取得しています。plyr + simpleboot:確率ベクトルのNA

これは私の関数である:

lb_weighted_median_dplyr <- function(x,v) { 
    set.seed(1234) 
    b <- one.boot(x, weights = v, FUN = function(x,w) matrixStats::weightedMedian(x, w = v, na.rm = TRUE), R = 100, student = FALSE) 
    round(perc(b, 0.025), 0) 
} 

何の機能がないと、私はwageが数値列であるとexp_regionは別である

ddply(wage_by_gender_2015, .(sex,region), summarise, FUN = lb_weighted_median_dplyr(wage, exp_region)) 

を実行すると信頼区間の下限を計算することです重みを含む数値列。

私はいくつかの地域のデータを持っていない、そのための機能は一部の地域で失敗し、返し

Error in eval(substitute(expr), envir, enclos) : NA in probability vector 
私はそのエラーを回避し、データのない地域の下限としてNAを入手するにはどうすればよい

http://users.dcc.uchile.cl/~mvargas/casen/wage_by_gender_2015.RData

+0

'dput()'を使ってデータを提供してください –

+0

あなたはdplyrと言っていますが、plyr関数を使っています... –

+0

どういう意味ですか?それはASCIIテキストを書きます – pachamaltese

答えて

2
wage_by_gender_2015 <- data.frame(sex = rep(c("male", "female"),100), 
            region = rep(c("north", "south", "east", 
               "west"), 50), 
            exp_region = abs(rnorm(100)), 
            wage  = abs(rnorm(100)) 
) 

wage_by_gender_2015$exp_region[10] <- NA 
ddply(wage_by_gender_2015, .(sex,region), summarise, FUN = lb_weighted_median_dplyr(wage, exp_region)) 
Error in sample.int(length(x), replace = TRUE, ...) : NA in probability vector 
# impute 
wage_by_gender_2015$exp_region <- RRF::na.roughfix(wage_by_gender_2015$exp_region) 

ddply(wage_by_gender_2015, .(sex,region), summarise, FUN = lb_weighted_median_dplyr(wage, exp_region)) 
01:

NA in probability vectorを返しdplyr同等のアプローチは、ここではデータの

grouped <- group_by(wage_by_gender_2015, sex, region) 
dplyr::summarise(grouped, FUN = lb_weighted_median_dplyr(wage, exp_region)) 

関連サンプルであります私はあなたのサンプルデータを使用しただろうが、それはsexがありませんでしたコメントで述べたように

sex region FUN 
1 female south 0 
2 female west 0 
3 male east 1 
4 male north 0 

+0

ありがとう...はい、私のばかげたエラー 今サンプルを更新します – pachamaltese

+1

私のサンプルを今更新しました。データセット ありがとうたくさん:) – pachamaltese

+1

@pachamalteseあなたは何か問題がある場合は私に知らせてください、 –