R、sqldf 和 avg 用于比率平均值
R, sqldf and avg for ratio average
为什么在 R 中使用 sqldf
时两个命令会产生不同的结果?
sqldf('select species,
avg([Petal.Width]/[Petal.Length])
as petalratio from iris group by species')
sqldf('select species,
([Petal.Width]/[Petal.Length])
as petalratio from iris group by species')
因为目标是找到 3 个物种中每个物种的比率的平均值。
select species,
avg([Petal.Width]/[Petal.Length]) as petalratio
from iris
group by species
此查询输出每个物种的平均值,因为您使用的是聚合函数 avg
。
select species,
([Petal.Width]/[Petal.Length]) as petalratio
from iris
group by species
由于您没有使用聚合函数,此查询为每个物种随机输出一行。这在大多数数据库中是不允许的,但在 SQLite 中是允许的,它是 sqldf
使用的默认数据库。
您应该将第一个查询与 avg
一起使用,因为这正是您想要做的。
为什么在 R 中使用 sqldf
时两个命令会产生不同的结果?
sqldf('select species,
avg([Petal.Width]/[Petal.Length])
as petalratio from iris group by species')
sqldf('select species,
([Petal.Width]/[Petal.Length])
as petalratio from iris group by species')
因为目标是找到 3 个物种中每个物种的比率的平均值。
select species,
avg([Petal.Width]/[Petal.Length]) as petalratio
from iris
group by species
此查询输出每个物种的平均值,因为您使用的是聚合函数 avg
。
select species,
([Petal.Width]/[Petal.Length]) as petalratio
from iris
group by species
由于您没有使用聚合函数,此查询为每个物种随机输出一行。这在大多数数据库中是不允许的,但在 SQLite 中是允许的,它是 sqldf
使用的默认数据库。
您应该将第一个查询与 avg
一起使用,因为这正是您想要做的。