尊敬的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
答案 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