gpt4 book ai didi

r - 如果数据包含NA/NULL,如何在聚合函数中强制使用NA/NULL

转载 作者:行者123 更新时间:2023-12-03 19:44:04 25 4
gpt4 key购买 nike

我经常使用sqldf软件包来基于复杂条件聚合数据帧。 sqlite的标准行为是在汇总(例如,计算平均值)时忽略NULL值,这与标准R行为(如果设置了na.rm = T时,如果数据包含NA值,则结果为NA)不同。

有没有办法强迫sqlite具有与R相同的行为(即如果数据包含NA / NULL,则输出NA或NULL)?

简单的例子:

library(sqldf)
data <- data.frame(name=c("v1","v2","v3"),value=c(5,3,NA))
mean(data$value)
> [1] NA

sqldf("SELECT avg(value) FROM data")
> avg(value)
> 1 4

最佳答案

如果count(value)没有空值,则count(*)以下将等于value

sqldf("select 
case when count(value) = count(*) then avg(value) else null end as value
from data")


也可以写成:

avgNA <- function(x) {
x <- deparse(substitute(x))
sprintf("case when count(%s) = count(*) then avg(%s) else null end", x, x)
}
fn$sqldf("select `avgNA(value)` as value from data")

关于r - 如果数据包含NA/NULL,如何在聚合函数中强制使用NA/NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24937056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com