R 中的中位数需要数值数据

Median in R needs numeric data

我有一个数据集,其中房间数为房间数,阳台大小为 balcony_size,我想检查每种类型或房间的中值是多少

data_new%>%
  group_by(rooms)%>%
  median(balcony_size, na.rm=TRUE)

此代码returns错误

Error in median.default(., balcony_size, na.rm = TRUE) : 
  need numeric data

balcony_size 是数字

data_new$balcony_size
   [1]    NA    NA    NA    NA  3.00  2.00  2.00  5.00    NA    NA    NA  4.00  2.00    NA  3.00    NA    NA
  [18]    NA 10.00 44.00  7.50    NA 62.00 29.00 12.00  8.00    NA    NA  6.00  6.00  8.00    NA    NA    NA
  [35]    NA  5.00  4.00    NA 15.00    NA    NA    NA  8.00    NA    NA    NA    NA  8.00    NA    NA    NA
  [52]  6.00  8.00  5.00 10.00    NA  5.00  1.00    NA  2.00 33.00  4.00    NA  4.00  6.00  5.00 12.00 15.00
> str(data_new$balcony_size)
 num [1:40099] NA NA NA NA 3 2 2 5 NA NA ...

我们可以在mutate中使用median如果是新建一个列

library(dplyr)
data_new%>%
    group_by(rooms)%>%
    mutate(Median = median(balcony_size, na.rm=TRUE))

或者如果我们只需要 summarised 输出

data_new%>%
    group_by(rooms)%>%
    summarise(Median = median(balcony_size, na.rm=TRUE))

或使用base R

aggregate(balcony_size ~ room, data_new, median, na.rm = TRUE, na.action = NULL)

如果我们在 group_by 之后直接应用 median,它是应用它的整个数据集,median 适用于 vector 而不是 data.frame