提供R

时间:2018-11-28 20:12:17

标签: r mean numeric

尊敬的StackOverflow用户

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

df

 trial   count
 1       0.75   
 2       .
 3       0.90
 4       0.80

因此我删除了。使用subset命令进行试用:

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

哪个提供以下输出:

 trial   count
 1       0.75   
 3       0.90
 4       0.80

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

mean(as.numeric(df$count))

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

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

感谢您的时间和考虑,

BC

1 个答案:

答案 0 :(得分:2)

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

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

否则,我们得到的是通过直接强制为factor来存储numeric的整数。例如

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