我有看起来像这样的数据 (dat)

region muscle    protein
head   cerebrum  78
head   cerebrum  56
head   petiole   1
head   petiole   2
tail   pectoral  3
tail   pectoral  4

我想取 cerebrum 蛋白质值的平均值。我试图查找不同的方法来对数据 herehere 进行子集化。但似乎没有一种直接的方法来做到这一点。现在,我正在这样做:
datcerebrum <- dat[which(dat$muscle == "cerebrum"),]
mean(datcerebrum$protein)

我试着浓缩这一行:
mean(dat[which(dat$muscle == "cerebrum"),])

但它抛出一个 NA 并警告参数不是数字或逻辑。有没有简单的方法来实现这一目标?

最佳答案

我们可以使用 aggregate 中的 base R

aggregate(protein ~muscle, dat, mean)
#   muscle protein
#1 cerebrum    67.0
#2 pectoral     3.5
#3  petiole     1.5

关于r - 如何在R中同时使用统计函数和子集数据?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46368612/

10-09 19:07