r - 如何修改 Sapply 以在其他列中找到平均值
问题描述
如果V1 = 0,我试图找出Yi0数据的平均值,如果V1 = 1,则为每个Vx(V1 ... V2等)列找出Yi1数据的平均值,但我的代码似乎有缺陷,有人吗有关于如何解决这个问题的建议吗?
这是我的示例数据和代码
set.seed(1)
df <- data.frame(Yi0 = runif(n=10, min = 0, max = 10),
Yi1 = runif(n=10, min = 0, max = 10),
V1 = c(1,1,1,1,1,0,0,0,0,0),
V2 = c(0,1,0,1,0,1,0,1,0,1))
pm <- function(x) {
as.numeric(
ifelse(
test = df[,x] == 0,
yes =mean(df["Yi0"]),
no = ifelse(
test = df[,x] == 1,
yes = mean(df["Yi1"]),
no = "error")))
}
ab <- sapply(X = 3:4, FUN=pm)
ab
最终,我要取 mean(2.059 + 1.765 + ... + 7.69) - mean(8.9838+9.446+...+0.6178),对于以 V 开头的每一列,我总共有 200 万他们...
谢谢你
解决方案
如果我对您的理解正确,对于V1
您想要做的一列 ( )
mean(df$Yi0[df$V1 == 0]) - mean(df$Yi1[df$V1 == 1])
#[1] 1.9
对于使用多个列,sapply
您可以执行 -
sapply(df[3:4], function(x) mean(df$Yi0[x == 0]) - mean(df$Yi1[x == 1]))
# V1 V2
# 1.94 -0.43
推荐阅读
- express - Next.js 与 Express.js nodemon 重新启动,但文件更改不起作用
- hl7-fhir - 如何将扩展发布到 Azure FHIR 存储库?
- azure - 如何在突触分析工作区的日志分析工作区中获取错误详细信息日志
- python - 将每小时数据重新采样为每日数据并在 python 中的特定列上求和
- reactjs - "snappy" react-dnd 预览:在 DropZone 上拖动时渲染预览
- python - 在 jupyter notebook 中读取顶点 ai 数据集
- apache-spark - 将字符串转换为整数在 spark sql 中给出 NULL 值
- primefaces - 如何在页面加载时显示上传文件对话框
- html - 如何保留原始html并在页面上使用React
- git - Azure DevOps 中的 git 钩子脚本