簡體   English   中英

對數據幀運行Power.t.test

[英]Run Power.t.test for a data frame

我正在嘗試在數據幀上運行power.t.test ,並嘗試為每個員工返回samplesize(n),但這給了我這個錯誤。

power.t.test中的誤差(delta = df $ Delta,sd = df $ sd,sig.level = 0.05,:正好是'n','delta','sd','power'和'sig。級別”必須為NULL

到目前為止,這是我所做的。

dput(d.f)
structure(list(power = c(0.95, 0.95, 0.95, 0.95), sig.level = c(0.05, 
0.05, 0.05, 0.05), sd = c(4.93255160738102, 20.3907509926899, 
23.1325373816684, 6.0463892968789), delta = c(97, 97, 90, 96), 
    workedby = structure(1:4, .Label = c("emp1", "emp2", "emp3", 
    "emp4"), class = "factor"), newcolumn = c(0, 0, 0, 0)), .Names = c("power", 
"sig.level", "sd", "delta", "workedby", "newcolumn"), row.names = c(NA, 
-4L), class = "data.frame")

第一種方法

 d.f$newcolumn <- 0

for (i in 1:nrow(d.f)) {
  n <- power.t.test(delta = d.f$delta, sd = d.f$sd, sig.level=.05, power = .8, type = "one.sample")
  d.f$newcolumn[i] <- n
}
head(d.f)

第二種方法:

apply(d.f[,c('power','sig.level','sd','delta')], 1, function(x) power.t.test(x) )

有人可以告訴我我在做什么錯。 基本上,我希望為每個雇員返回SampleSize。

它以單個值作為輸入,而不是數據幀。 以下作品:

power.t.test(delta=d.f$delta[1], sig.level=d.f$sig.level[1], power=d.f$power[1], sd=d.f$sd[1])

您將需要將其包裝成一個循環,然后將其重新分配給“新列”中的正確行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM