sqldf() 中的 count distinct 和 tidy 代码相差一个
Off by one difference between count distinct in sqldf() and tidy code
我正在尝试使用 sqldf 包计算 R 中数据集中不同名称的数量,并想使用 tidy 检查我的答案。我得到的答案略有不同,无法弄清楚是什么原因造成的。这是我的代码:
mayors <- read_csv(file="https://raw.githubusercontent.com/jmontgomery/jmontgomery.github.io/master/PDS/Datasets/Mayors.csv")
mayorsDF <- as.data.frame(mayors)
library(sqldf)
sqldf("select count(distinct FullName) from mayorsDF") # gives me 1406
allNamesDF <- sqldf("select distinct FullName from mayorsDF")
length(allNamesDF$FullName) # gives me 1407
library(tidyverse)
mayors %>%
select("FullName") %>%
unique() %>%
count() # gives me 1407
我错过了什么?我是 sqldf 包的新手,但不是 SQL.
的新手
SQL 不将空值计为 count distinct
中的唯一值,并且您的数据中有空值。
sqldf::sqldf("select count(*) as n from mayorsDF where FullName is null")
# n
# 1 36
allNamesDF <- sqldf::sqldf("select distinct FullName from mayorsDF")
anyNA(allNamesDF)
# [1] TRUE
sum(is.na(allNamesDF))
# [1] 1
length(unique(allNamesDF[!is.na(allNamesDF)]))
# [1] 1406
相关:Counting null values as unique value
我正在尝试使用 sqldf 包计算 R 中数据集中不同名称的数量,并想使用 tidy 检查我的答案。我得到的答案略有不同,无法弄清楚是什么原因造成的。这是我的代码:
mayors <- read_csv(file="https://raw.githubusercontent.com/jmontgomery/jmontgomery.github.io/master/PDS/Datasets/Mayors.csv")
mayorsDF <- as.data.frame(mayors)
library(sqldf)
sqldf("select count(distinct FullName) from mayorsDF") # gives me 1406
allNamesDF <- sqldf("select distinct FullName from mayorsDF")
length(allNamesDF$FullName) # gives me 1407
library(tidyverse)
mayors %>%
select("FullName") %>%
unique() %>%
count() # gives me 1407
我错过了什么?我是 sqldf 包的新手,但不是 SQL.
的新手SQL 不将空值计为 count distinct
中的唯一值,并且您的数据中有空值。
sqldf::sqldf("select count(*) as n from mayorsDF where FullName is null")
# n
# 1 36
allNamesDF <- sqldf::sqldf("select distinct FullName from mayorsDF")
anyNA(allNamesDF)
# [1] TRUE
sum(is.na(allNamesDF))
# [1] 1
length(unique(allNamesDF[!is.na(allNamesDF)]))
# [1] 1406
相关:Counting null values as unique value