在R中使用datatable或dplyr进行聚合

在R中使用datatable或dplyr进行聚合,r,data.table,aggregate,R,Data.table,Aggregate,我想聚合一个包含时间、日期和其他变量的数据集。现在我遇到了一个问题,我想记录一天中一个变量的最早值 dt[, .(new_var1 := dt[time==(min(time)), .(var1)), by = .(month,day)] 但它会返回许多重复的行。在一天中,将有许多行。试试这个(使用dplyr) 或 编辑:获取每个日期的最小值: dt %>% group_by(month, date) %>% top_n(1, -var1) 对于最小值和最大值 dt %&

我想聚合一个包含时间、日期和其他变量的数据集。现在我遇到了一个问题,我想记录一天中一个变量的最早值

dt[, .(new_var1 := dt[time==(min(time)), .(var1)), by = .(month,day)]
但它会返回许多重复的行。在一天中,将有许多行。

试试这个(使用
dplyr

编辑:获取每个日期的最小值:

dt %>%
  group_by(month, date) %>%
  top_n(1, -var1)
对于最小值和最大值

dt %>%
  group_by(month, date) %>%
  arrange(month, date) %>%
  filter(row_number() %in% c(1, n())
我们可以使用

library(data.table)
dt[order(time), head(.SD, 1L), .(month, day)]
更新 如果我们需要
max
min

dt[dt[order(time), .I[c(1, .N)], .(month, day)]$V1]

尝试
dt[顺序(时间),头部(.SD,1L),(月,日)]
如果你想知道这个问题的负面反应,可能与你所说的你尝试过的荒谬代码有关(括号不匹配)。您最好制作一个小的可复制示例,如这里所述:谢谢!但我还想得到最大值或最小值,不仅仅是最早的。我编辑了答案。您可以在
top\n
上调整
wt
输入,或使用过滤器选项:
filter(var1==min(var1))
谢谢!是否有可能同时获得最大值和最早值。
library(data.table)
dt[order(time), head(.SD, 1L), .(month, day)]
dt[dt[order(time), .I[c(1, .N)], .(month, day)]$V1]