当前位置: 首页 > 知识库问答 >
问题:

计算R中需要满足2个条件时的平均值

子车才捷
2023-03-14

我试图从我的数据框中得到不同健康状况的男性和女性的平均年龄。

AgeAnalyisi$Age     num
AgeAnalyisi$Gout        logical
AgeAnalyisi$Arthritis   logical
AgeAnalyisi$Vasculitis  logical
etc
AgeAnalysis$Gender      Factor w/ 2 levels

我可以得到平均年龄单独使用

mean(AgeAnalysis$Age [AgeAnalysis$Gender=="M" & AgeAnalysis$Gout=="TRUE"] , na.rm = TRUE)

但是有没有一种更雄辩的方法将它们全部汇总到一个表中,以便平均年龄的输出显示为

          Male  Female
Gout        x   x
Arthritis   x   x
Vasculitis  x   x
etc         x   x

非常感谢。

共有2个答案

闽哲
2023-03-14

这是一个数据表解决方案

library(data.table)
AgeAnalyisis.DT <- data.table(AgeAnalyisis)

AgeAnalyisis.DT[, lapply(.SD[, !"Age", with=FALSE], function(x) mean(Age[x]))
                , by=Gender]

   Gender     Gout Arthritis Vasculitis
1:      F 54.58333  52.00000   55.81818
2:      M 50.09091  52.69231   52.40000

如果你想换位,你可以使用:

# Save the results
res <- AgeAnalyisis.DT[, lapply(.SD[, !"Age", with=FALSE], function(x) mean(Age[x]))
                       , by=Gender]
# Transpose, and assign Gender as column names
results <- t(res[,!"Gender", with=FALSE])
colnames(results) <- res[, Gender]

results
#                   F        M
# Gout       58.30263 57.50328
# Arthritis  66.00217 67.91978
# Vasculitis 59.76155 57.86556
耿联
2023-03-14

您可以尝试<code>聚合

df <- data.frame(value=1:10, letter=rep(LETTERS[1:2], each=5), group=rep(c(1,2), times=5))
aggregate(value ~ letter * group, data=df, FUN=mean)
#  letter group value
#1      A     1     3
#2      B     1     8
#3      A     2     3
#4      B     2     8
 类似资料:
  • 本文向大家介绍计算满足C ++中给定条件的索引对,包括了计算满足C ++中给定条件的索引对的使用技巧和注意事项,需要的朋友参考一下 我们给了前N个自然数的排列数组。这里的目标是找到满足以下条件的元素的索引对- 如果数组是Arr [],则i,j是索引,对元素对进行计数,使Arr [i] + Arr [j] = max(Arr [x])使得i <= x <= j。 即,Arr [i]和A [j]之和等

  • 我正在尝试使用一个do while循环来找出用户是想将一只狗还是一只猫检查到Java的养狗系统中。其思想是,当提示时输入“dog”或“cat”,任何输入都将导致错误,并且他们将再次被提示输入文件名。 如果输入了“cat”或“dog”,那么将为程序分配等效的文件(dogs.txt或cats.txt),然后系统将运行并将数据加载到程序中。 以下是当前的变量: 以及导致问题的方法: 下面是运行代码时打印

  • 我有一个标准差,平均值和样本量。我需要创建一个循环,将产生5000个样本的意思 我该怎么做?

  • 我试图做以下java分配和每件事似乎工作正常,除了当我把一个数字 谢谢 赋值:创建一个询问考试结果并计算成绩平均值的程序。成绩是4到10之间的浮点数。程序要求成绩,直到键入负数。如果用户给出的分数不是4到10之间的数字,则文本“无效成绩!”将在屏幕上打印,程序要求另一个分数。最后,程序在屏幕上打印输入的成绩数及其平均值,如示例打印所示。如果没有输入成绩,通知“您没有输入任何成绩。”是屏幕上唯一打印

  • 我有一个netCDF文件(. nc),其中包含16年(1998-2014年)的日降水量(5844层)。3个维度是时间(大小5844)、纬度(大小19)和经度(大小20)R中是否有一种简单的方法来计算每个rastercell: < li >每月 到目前为止,我已经: 我的第一个挑战是计算每个光栅单元的月平均值。我不确定在牢记最终目标(累积比较)的同时,如何最好地进行。我怎样才能轻松地访问某个月的几天

  • 每个代理都有一个私有布尔变量“Happy?”。如何用[Happy?=True]计算特工人数? 就餐时有没有直接的方法?或者我遍历了所有的代理,然后逐个计算? 更新: 我尝试过全局调度方法:https://repast.github.io/docs/RepastReference/RepastReference.html#schedule-全球的 当我使用ContextBuilder中的@schdu