在给定“药物”水平的情况下,如何获得每个“年龄”水平的“bfat”平均值(在本例中,当药物==1时)?我试过这个:
require(dplyr)
df<-data.frame(drug=c(1,1,1,1,2),age=c(1,2,3,1,1),bfat=c(10,30,3,4,7))
noDrug<-df%>%split(drug==1) #get only drug ==1
noDrug<-as.data.frame(noDrug$'TRUE')
mean.bfat.per.level.of.age <- noDrug%>%group_by(age) %>% summarise(mean(bfat)) #when drug==1
我期望得到 3 个值:
age1 mean bfat when drug=1: 7
age2 mean bfat when drug=1: 30
age3 mean bfat when drug=1: 3
最佳答案
我们过滤
“drug”为 1 的行,然后按“age”分组,并获取“bfat”的平均值
。
df %>%
filter(drug==1) %>%
group_by(age) %>%
summarise(bfat= mean(bfat))
# age bfat
# (dbl) (dbl)
#1 1 7
#2 2 30
#3 3 3
如果 plyr
和 dplyr
都已加载,请将最后一行代码更改为
-- %>%
dplyr::summarise(bfat = mean(bfat))
关于r - 计算因子的正确方法是使用 dplyr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33678742/