我有一个数据框。
我正在尝试使用tapply
函数在第二列的值等于给定值时查找一列的平均值。
我希望tapply
返回均值的值,但它返回一个逻辑数组
(FALSE - 第二列的值不等于给定值时的平均值,TRUE - 第二列的值等于给定值时的平均值)
这是我正在应用的功能(当列“cyl”等于4时,我想要列“hp”的平均值)
tapply(mtcars$hp,mtcars$cyl==4,mean)
这是返回的内容:
FALSE TRUE
180.23810 82.63636
如何才能将输出简单地设为82.63636?
谢谢
答案 0 :(得分:2)
如果您 使用tapply
,则需要将结果子集化为仅返回您想要的值
tapply(mtcars$hp,mtcars$cyl==4,mean)[[2]]
82.63636
但是,要获取列的平均值,按另一列的子集,您只需在子集数据上调用mean
mean(mtcars$hp[mtcars$cyl == 4])
82.63636
## similarly
# mean(mtcars[mtcars$cyl == 4, "hp"])