首页 > 解决方案 > R中的中位数需要数字数据

问题描述

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

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

此代码返回错误

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

阳台大小是数字

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 ...

标签: rmedian

解决方案


如果是创建一个新列,我们可以使用medianinmutate

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)

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


推荐阅读