如何在数据框中存储迭代样本均值?

时间:2016-08-31 08:16:21

标签: r

我的样本数据有270个观察结果,如下所示

age id  kilometers
32  1   1
30  2   8
23  3   2
31  4   6

我首先创建一个空白数据框来存储信息

df <- data.frame(Sample.Num = integer(),
                 Sample.Mean = integer(),
                 stringsAsFactors = FALSE)
df[1,] <- NA

然后我读了R

中的文件
sampledata <- read.csv(file.choose(),header = TRUE)

然后我试图运行一个for循环,它将从上面的270行中随机选择两个观察值,并存储样本数和样本平均公里数。发布我想检查平均'

的抽样分布
for (i in 1:100){
  mysample <- sampledata[sample(1:nrow(sampledata),size = 2,replace = TRUE),]
  meansample <- mean(mysample$kilometers,na.rm = TRUE)
  df$Sample.Num <- i
  df$Sample.Mean <- meansample
}

但我对R来说很新。每次运行时,样本数都会改变,但数据帧df会存储最后一次迭代(即第100次迭代)。我无法存储剩余的99个 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

你可以这样做:

df <- data.frame(
  Sample.Num=1:100, 
  Sample.Mean=replicate(100, mean(sampledata$kilometers[sample.int(nrow(sampledata), size=2, replace=TRUE)], na.rm=TRUE))
)

或更短:

df <- data.frame(
  Sample.Num=1:100, 
  Sample.Mean=replicate(100, mean(sample(sampledata$kilometers, size=2, replace=TRUE), na.rm=TRUE))
)

如果sampledata$kilometers中没有NA,则可以执行以下操作:

df <- data.frame(
  Sample.Num=1:100, 
  Sample.Mean=replicate(100, mean(sample(sampledata$kilometers, 2, rep=TRUE)))
)