首页 > 解决方案 > R中的中值 - 返回四舍五入的数字

问题描述

我有一个数据表,其中我根据它们所属的集群标记了行,并计算了行列值的平均值。我想为每个集群选择中间行。

例如,只看一个,我想使用:

    median(as.numeric(as.vector(subset(df,df$cluster == i )$avg))) 

我知道

> as.numeric(as.vector(subset(df,df$cluster == i )$avg))
 [1] 48.11111111 47.77777778 49.44444444 49.33333333 47.55555556 46.55555556 47.44444444 47.11111111 45.66666667 45.44444444

然而,中位数是

> median(as.numeric(as.vector(subset(df,df$cluster == i )$avg)))
[1] 47.5

我想通过将返回的中值与列中的平均值进行匹配来找到中值记录,但是对于这个返回值是不可能的。

我发现了一些关于使用 mean 函数舍入的文档和问题,但不幸的是,这似乎并不适用。

我也可以限制数据的小数位,但有些记录会太接近,如果四舍五入到小数点后重复将很常见。

标签: rmedian

解决方案


有一种更简单的方法可以做到这一点:使用 dplyr

library(dplyr)

df%>%
group_by(cluster)%>% 
summarise(Median=median(avg))

推荐阅读