R - tapply列意味着,返回逻辑数组

时间:2016-12-13 00:47:25

标签: r tapply

我有一个数据框。

我正在尝试使用tapply函数在第二列的值等于给定值时查找一列的平均值。

我希望tapply返回均值的值,但它返回一个逻辑数组

(FALSE - 第二列的值不等于给定值时的平均值,TRUE - 第二列的值等于给定值时的平均值)

这是我正在应用的功能(当列“cyl”等于4时,我想要列“hp”的平均值)

tapply(mtcars$hp,mtcars$cyl==4,mean)

这是返回的内容:

 FALSE      TRUE 
180.23810  82.63636 

如何才能将输出简单地设为82.63636?

谢谢

1 个答案:

答案 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"])