- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在使用代码来运行特定变量值(人口统计中断)的均值,但是我现在拥有具有权重变量并且需要计算加权均值的数据。我已经在使用代码来计算样本均值,并且想知道是否可以更改更改或调整函数来计算加权均值。这是一些生成示例数据的代码
df <- data.frame(gender=c(2,2,1,1,2,2,1,1,1,1,1,1,2,2,2,2,1,2,2,1),
agegroup=c(2,2,7,5,5,5,2,7,2,2,4,4,4,3,4,5,3,3,6,6),
attitude_1=c(4,3,4,4,4,4,4,4,5,2,5,5,5,4,3,2,3,4,2,4),
attitude_2=c(4,4,1,3,4,2,4,5,5,5,5,4,5,4,3,3,4,4,4,4),
attitude_3=c(2,2,1,1,3,2,5,1,4,2,2,2,3,3,4,1,4,1,3,1),
income=c(40794,74579,62809,47280,72056,57908,70784,96742,66629,117530,79547,54110,39569,111217,109146,56421,106206,28385,85830,71110),
weight=c(1.77,1.89,2.29,6.14,2.07,5.03,0.73,1.60,1.95,2.56,5.41,2.02,6.87,3.23,3.01,4.68,3.42,2.75,2.31,4.04))
到目前为止,我一直在使用此代码来获取示例方法
assign("Gender_Profile_1",
data.frame(sapply(subset(df, gender==1), FUN = function(x) mean(x, na.rm = TRUE))))
> Gender_Profile_1
sapply.subset.df..gender....1...FUN...function.x..mean.x..na.rm...TRUE..
gender 1.000
agegroup 4.200
attitude_1 4.000
attitude_2 4.000
attitude_3 2.300
income 77274.700
weight 3.016
如您所见,它会生成具有所有变量均值的 Gender_Profile_1。在我尝试计算加权平均值时,我尝试将 "FUN=" 部分更改为此
assign("Gender_Profile_1",
data.frame(sapply(subset(df, gender==1), FUN = function(x) weighted.mean(x, w=weight,na.rm = TRUE))))
我收到以下错误消息
Error in weighted.mean.default(x, w = weight, na.rm = TRUE) :
'x' and 'w' must have the same length
我一直在尝试各种 df$weight 和 df$x 的排列,但似乎没有任何效果。任何帮助或想法都会很棒。非常感谢
最佳答案
如果您想坚持使用 base R,您可以执行以下操作:
# define func to return all weighted means
all_wmeans <- function(data_subset) {
# which cols to summarise? all but gender and weight
summ_cols <- setdiff(names(data_subset), c('gender', 'weight'))
# for each col, calc weighted mean with weights from the 'weight' column
result <- lapply(data_subset[, summ_cols],
weighted.mean, w=data_subset$weight)
# squeeze the resuling list back to a data.frame and return
return(data.frame(result))
}
# now, split the df on gender, and apply the func to each chunk
lapply(split(df, df$gender), all_wmeans)
对于 gender
的每个值,结果是两个数据框的列表:
$`1`
agegroup attitude_1 attitude_2 attitude_3 income
1 4.397546 4.027851 3.950597 1.962202 74985.25
$`2`
agegroup attitude_1 attitude_2 attitude_3 income
1 4.092234 3.642666 3.676287 2.388872 64075.23
如果您不介意使用包,dplyr
和 data.table
是很棒的包,可以使这类事情变得更加简单。这是 data.table
:
# load library and create a data.table object
library(data.table)
my_dt <- data.table(df)
# now it's a one liner:
my_dt[, lapply(.SD, weighted.mean, w=.SD$weight), by=gender]
返回:
gender agegroup attitude_1 attitude_2 attitude_3 income weight
1: 2 4.092234 3.642666 3.676287 2.388872 64075.23 4.099426
2: 1 4.397546 4.027851 3.950597 1.962202 74985.25 3.904483
data.table 代码还按性别对行进行分组,并使用 lapply
将函数和额外参数应用于 D
S子集strong>ata(这就是 .SD
调用的内容)。从概念上讲,它与基本 R 代码完全相同,只是紧凑且快速。
关于R 查询 - 是否可以同时使用 "sapply"和 "weighted.mean"函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60420945/
我希望深入了解 LightFM 实现的以下权重: 样本权重 什么是sample_weights在 fit方法?我读到它们是为了模拟时间衰减,但这究竟是如何工作的?解释这一点的示例或文章将非常有帮助。
如果这是一个愚蠢的问题,我预先道歉。 当调用 nw:weighted-path-to 时,会返回一个链接列表,描述起始海龟和目标海龟之间的最短路径。 类似地,调用 nw:turtles-on-weig
我阅读了以下代码: //talkback.c -- nosy, informative program #include #include //for strlen() prototype #d
我有这个示例 html 文件: Test font bold (weight = 700) Test font bold (weight = 900) 我不知道为什么如果我将
您好,我正在为我自己的数据集训练 VGG16 网络。下面给出了我使用的代码。 from keras.models import Sequential from scipy.misc import im
我刚看完the notes CNN 上的斯坦福 CS231n 和现场链接 demo ;然而,我不确定演示中的“激活”、“激活梯度”、“权重”和“权重梯度”指的是什么。 以下屏幕截图已从演示中复制。 混
我不明白 maxout 是如何工作的,我怀疑这是由于我对线性代数乘法的可视化造成的。基本上,我的印象是 maxout 函数有两组权重,均经过单独训练,然后只选择一组。但我怀疑这可能是错误的,因为我没有
我运行了 Tensorflow 1.0 提供的 ptb_word_lm.py,但它显示了这条消息: ValueError: Attempt to have a second RNNCell use t
我有一个关于 R 中的样本函数的简单问题。我从长度为 5 的输入向量中随机抽样 0 和 1 并将它们相加,该向量指定要运行的试验次数并设置种子以生成可重复的随机数字。种子按预期工作,但根据我在 pro
我有一个以“h5”格式保存的模型。在使用 编译模型后,我正在尝试恢复训练并尝试加载优化器的权重 model.optimizer.set_weights(weights_list) 哪里weights_
我正在尝试为我的大学项目开发电话分类器模型。我已经训练了我的模型,当我尝试通过执行 python app/server.pyserve 来部署模型时遇到了问题。我读了一篇文章( https://f
所以... var testArray=new Array("hello"); testArray.length=100; console.log(testArray.length); 我相信上面的内
在 css 规范中,什么会影响更多的 inline 样式或外部 !important 外部“style.css”: #di{color: green!important;} div 文本颜色是红色还
我正在使用 http://hughsk.github.io/colony/ 的调整后的代码,但我不断收到错误: Uncaught TypeError: Cannot read property 'we
我们有一个系统,它按表中的“优先级”编号处理记录。我们通过表的内容定义优先级,例如 UPDATE table SET priority=3 WHERE processed IS NULL UPDATE
我已经使用 Darkflow 和 yolov2.weights 进行了定制训练。 checkpoint 文件夹中有四个文件。它们是: 1.yolov2-3c-5500.data-00000-of-00
我需要将 weighted.mean 函数包含在另一个函数中,作为我正在处理的项目的一部分。我无法让 w 参数在我正在处理的函数中正常工作。 为了使我的整体功能正常工作,我需要满足使权重参数必须是可选
我想使用 ggplot 绘制加权 CDF。一些旧的非 SO 讨论(例如 2012 年的 this)表明这是不可能的,但我想我会重新加注。 例如,考虑以下数据: df <- data.frame(x=s
这个问题已经有答案了: 已关闭11 年前。 Possible Duplicate: In Java, what is the best way to determine the size of an
我需要将 weighted.mean 函数包含在另一个函数中,作为我正在处理的项目的一部分。我无法让 w 参数在我正在处理的函数中正常工作。 为了使我的整体功能正常工作,我需要满足使权重参数必须是可选
我是一名优秀的程序员,十分优秀!