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