使用 sqldf 检索具有相同最小值的列的所有行
Retrieve all rows with same minimum value for a column with sqldf
我必须检索已完成最低工作数量的员工的 ID。有多名员工完成了 1 份工作。我当前的 sqldf 查询仅检索 1 行数据,而有多个员工 ID 只完成了 1 个工作。为什么它停在第一个最小值?以及如何获取列中具有最小值的所有行?这是一个数据示例:
ID TaskCOunt
1 74
2 53
3 10
4 5
5 1
6 1
7 1
我用过的代码:
sqldf("select id, min(taskcount) as Jobscompleted
from (select id,count(id) as taskcount
from MyData
where id is not null
group by id order by id)")
输出为
ID leastcount
5 1
而我想要的是完成最少作业的所有行。
ID Jobscompleted
5 1
6 1
7 1
min(...)
始终 returns 在 SQL 中一行,所有 SQL 聚合函数也是如此。试试这个:
sqldf("select ID, TaskCount TasksCompleted from MyData
where TaskCount = (select min(TaskCount) from MyData)")
给予:
ID TasksCompleted
1 5 1
2 6 1
3 7 1
注意:可重现形式的输入是:
Lines <- "
ID TaskCount
1 74
2 53
3 10
4 5
5 1
6 1
7 1"
MyData <- read.table(text = Lines, header = TRUE)
作为 sqldf
的替代方法,您可以使用 data.table
:
library(data.table)
dt <- data.table(ID=1:7, TaskCount=c(74, 53, 10, 5, 1, 1, 1))
dt[TaskCount==min(TaskCount)]
## ID TaskCount
## 1: 5 1
## 2: 6 1
## 3: 7 1
我必须检索已完成最低工作数量的员工的 ID。有多名员工完成了 1 份工作。我当前的 sqldf 查询仅检索 1 行数据,而有多个员工 ID 只完成了 1 个工作。为什么它停在第一个最小值?以及如何获取列中具有最小值的所有行?这是一个数据示例:
ID TaskCOunt
1 74
2 53
3 10
4 5
5 1
6 1
7 1
我用过的代码:
sqldf("select id, min(taskcount) as Jobscompleted
from (select id,count(id) as taskcount
from MyData
where id is not null
group by id order by id)")
输出为
ID leastcount
5 1
而我想要的是完成最少作业的所有行。
ID Jobscompleted
5 1
6 1
7 1
min(...)
始终 returns 在 SQL 中一行,所有 SQL 聚合函数也是如此。试试这个:
sqldf("select ID, TaskCount TasksCompleted from MyData
where TaskCount = (select min(TaskCount) from MyData)")
给予:
ID TasksCompleted
1 5 1
2 6 1
3 7 1
注意:可重现形式的输入是:
Lines <- "
ID TaskCount
1 74
2 53
3 10
4 5
5 1
6 1
7 1"
MyData <- read.table(text = Lines, header = TRUE)
作为 sqldf
的替代方法,您可以使用 data.table
:
library(data.table)
dt <- data.table(ID=1:7, TaskCount=c(74, 53, 10, 5, 1, 1, 1))
dt[TaskCount==min(TaskCount)]
## ID TaskCount
## 1: 5 1
## 2: 6 1
## 3: 7 1