使用以下数据集,我尝试使用列Val1
的权重为每个“类别”计算列Val2
和Wt
的加权平均值。
数据:
Category,Details,Wt,Val1,Val2
A,Apple,8,3.0,12
A,Apple Gala,30,4.3,8
B,Banana,9,5.7,4
B,Banana Ripe,12,7.3,0
B,Banana Green,16,9.0,-4
C,Cantaloupe,4,10.9,-8
C,Carrot,86,13.0,-12
C,Cane,92,15.3,-16
希望通过这个来实现这一目标。
ddply (data, .(Category), summarize, function (y) {
apply(y[,4:5],2,function(x) sum (x*Wt/sum(Wt))}
)
实际数据集要大得多。
答案 0 :(得分:2)
apply
内部不需要ddply
(如果您使用的是summarize
,则不需要ddply(data, .(Category), summarize,
m1 = weighted.mean(Val1, Wt),
m2 = weighted.mean(Val2, Wt))
,这需要您定义单独的新列。)
dplyr
如果您担心效率,则应升级到library(dplyr)
data %>% group_by(Category) %>%
summarize(
m1 = weighted.mean(Val1, Wt),
m2 = weighted.mean(Val2, Wt)
)
。在这种情况下,语法非常相似:
<?php
/* https://developer.vimeo.com/api/playground/videos */
$vdata = file_get_contents('https://api.vimeo.com/videos?query='.$search.'&page='.$p.'&per_page=5&access_token='.$vimeo_token.'');
$vresponse = json_decode($vdata);
if ($vresponse->data==NULL){
echo '';
}else{
foreach ($vresponse->data as $vresult)
{
//...
或者,如果你有更多专栏,你可以使用David Arenburg的评论来扩大规模。