首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果缺少权重,按加权平均值或简单平均值计算的汇总列

如果缺少权重,按加权平均值或简单平均值计算的汇总列
EN

Stack Overflow用户
提问于 2015-07-17 10:54:18
回答 1查看 215关注 0票数 1

我试图聚合数据框架的某些列。在我的数据框架中,每一列对应于一个行业,每一行对应一个特定的国家。从理想上讲,我想按加权平均数汇总某些列。然而,对于一小部分,重量是缺失的。在这种情况下,我希望R能把这个国家的工业平均起来。来自数据帧的片段(这些是其他列的示例性权重)

代码语言:javascript
复制
|   Mining   | Food     |  weight85| weight90.93|
|:----------:|--  -----:|---------:|------------|
|   0.9608709| 0.8839236| 0.2738525|   0.1943577|
|   0.6445055| 0.8483874| 0.2958678|   0.1043844|
|   0.6977353| 0.9449249|        NA|          NA|
|   0.7970192| 0.5941056| 0.2324452|   0.1904089|
|   0.7261323| 0.6333187|        NA|          NA|
|   0.9959837| 1.0101725| 0.3872314|   0.1628354|

在将缺失的值问题累加时,我计算加权平均值如下:

代码语言:javascript
复制
  GGPC$mining.weighted <- GGPC$weight85*GGPC$Mining
  GGPC$food.weighted  <- (1-GGPC$weight85)*GGPC$food
  GGPC$food.mining<- rowSums(GGPC[,54:55], na.rm=T)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-18 16:21:11

以mts提供的答案为基础。我给出了一个解决方案,它计算一行的简单平均值或加权平均值。

代码语言:javascript
复制
 if(sum(is.na(DF[1,37])>0)) {1/2*DF[1,5]+1/2*DF[1,6]}
 else  { DF[1,37]*GGPC[1,5]+(1-DF[1,37])*DF[1,6]} 

并进一步遍历数据帧的行。

代码语言:javascript
复制
 DF$data.column.agg <- 0
 for (i in 1:length(DF)) {
  DF[i,*data.column.agg*] <- if(sum(is.na(DF[i,*weight column*])>0))  {*simple average* }     
 else {DF[i,*weight column*]*GGPC[i,*data column1*]+(1-DF[i,*weight column*])*GGPC[i,*data column2*]} 
 }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31474183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档