在 R 中提供排序输出的均值函数

Mean function providing rank order output in R

尊敬的 Whosebug 用户,

R 将特定数据集视为非数字,一个相当正常的问题:

df

 trial   count
 1       0.75   
 2       .
 3       0.90
 4       0.80

所以我删除了 .使用子集命令进行试验:

 df <- subset(df, count != '.')

提供以下输出:

 trial   count
 1       0.75   
 3       0.90
 4       0.80

我想计算计数的平均值,所以我执行以下操作,

mean(as.numeric(df$count))

但出于某种原因,我没有得到所有值的平均值 (.816),而是得到了排名顺序值 (2) 的平均值。

我从来没有遇到过这个问题,虽然我可以想到很多解决方法,但我想知道是否有人知道为什么会这样?

感谢您的时间和考虑,

BC

问题是 . 将列类型从 numeric 更改为 character(或 factor)。在这种情况下,它似乎是 factor。我们需要先转换为character,然后再转换为numeric

mean(as.numeric(as.character(df$count)))

否则直接强制转换为numeric得到的是factor的整数存储值。例如

set.seed(24)
v1 <- factor(sample(c(7, 19, 5, 3, 20), 20, replace = TRUE))
as.integer(v1)
#[1] 4 4 1 2 1 5 4 1 5 4 1 4 1 1 4 5 3 3 2 3
as.numeric(as.character(v1))
#[1] 19 19  3  5  3 20 19  3 20 19  3 19  3  3 19 20  7  7  5  7