Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
计算R中需要满足2个条件时的平均值_R - Fatal编程技术网

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

计算R中需要满足2个条件时的平均值,r,R,我正试图从我的数据框架中得到不同健康状况的男性和女性的平均年龄 AgeAnalyisi$Age num AgeAnalyisi$Gout logical AgeAnalyisi$Arthritis logical AgeAnalyisi$Vasculitis logical etc AgeAnalysis$Gender Factor w/ 2 levels 我可以单独使用 mean(AgeAnalysis$Age [AgeAnalysis$Gender==

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

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

谢谢

您可以尝试
聚合
功能:

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

df这是一个data.table解决方案

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
库(data.table)

AgeAnalysisis.DT查看“聚合”、“通过”和“数据表”谢谢,这在我的32位版本的R上没有运行,但在64位上运行了。此外,我还必须在mean命令中添加na.rm=TRUE,但我很高兴有一个漂亮的表。
# 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