在 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
尊敬的 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