【问题标题】:R - tapply column mean, returning logical arrayR - tapply 列均值,返回逻辑数组
【发布时间】:2016-12-13 00:47:25
【问题描述】:

我有一个数据框。

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

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

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

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

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

这是返回的内容:

 FALSE      TRUE 
180.23810  82.63636 

我怎样才能让输出只是 82.63636?

谢谢

【问题讨论】:

  • 抓取结果的第二个元素tapply(mtcars$hp,mtcars$cyl==4,mean)[[2]]
  • 太棒了,绝对有效。谢谢!
  • 虽然,你需要tapply吗? mean(mtcars[mtcars$cyl == 4, "hp"])

标签: r tapply


【解决方案1】:

如果您使用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"])

【讨论】:

    猜你喜欢
    • 2015-07-22
    • 2019-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-15
    相关资源
    最近更新 更多