Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R中子集的加权平均_R - Fatal编程技术网

R中子集的加权平均

R中子集的加权平均,r,R,我在R中有一个5列的大数据帧。第1列包含0-200之间的数字列表。第二列包含要加权的数字列表,第三列包含第二列中项目的权重。我的问题是我想把第一列分成几部分:(0,50),(50100),(100150)和(150200),然后找到每个区间中数据的加权平均值 我可以先将数据分别划分为这些区间,创建一个新的数据帧,然后计算每个新数据帧中第2列和第3列向量的加权平均值,但这需要我对数据进行四次检查,并且使用与我现有数据帧一样大的数据帧,这太低效了我需要更多的时间间隔,所以需要更长的时间 有没有办法只

我在R中有一个5列的大数据帧。第1列包含0-200之间的数字列表。第二列包含要加权的数字列表,第三列包含第二列中项目的权重。我的问题是我想把第一列分成几部分:(0,50),(50100),(100150)和(150200),然后找到每个区间中数据的加权平均值

我可以先将数据分别划分为这些区间,创建一个新的数据帧,然后计算每个新数据帧中第2列和第3列向量的加权平均值,但这需要我对数据进行四次检查,并且使用与我现有数据帧一样大的数据帧,这太低效了我需要更多的时间间隔,所以需要更长的时间


有没有办法只在一次运行中将其分割开来?

尝试以下方法:

df <- data.frame(x1 = 0:200, x2=rnorm(201), x3=rnorm(201))
s <- c(0,rep(1:4, each=50)) # create vector to split by
dfs <- split(df,s) # split it
dfs <- dfs[2:5]
lapply(dfs, function(tmp) {  # apply weighted mean to splits
    weighted.mean(tmp[,2],tmp[,3])
})

df非常感谢!这个方法正是我想要的。而且,如果你不知道的话,sort(rep(1:4,50))可以这样写:rep(1:4,each=50)@kng我总是忘记
each
!Updated。