r - 哪种方法可以最快地得出 R 数据框列的条件最小值?

标签 r dataframe dplyr conditional-statements

假设我们有这个数据框:

> data
  ID Period_1 Values
1  1  2020-03     -5
2  1  2020-04     25
3  2  2020-01     35
4  2  2020-02     45
5  2  2020-03     55
6  2  2020-04     87
7  3  2020-02     10
8  3  2020-03     20
9  3  2020-04     30

data <- 
  data.frame(
    ID = c(1,1,2,2,2,2,3,3,3),
    Period_1 = c("2020-03", "2020-04", "2020-01", "2020-02", "2020-03", "2020-04", "2020-02", "2020-03", "2020-04"),
    Values = c(-5, 25, 35, 45, 55, 87, 10, 20, 30)
  )

我想提取“值”的最小值,但前提是满足 Period_1 条件(例如 Period_1 == "2020-04")。我倾向于使用 dplyr group_by(Period_1) %>% 但我不需要所有 Period_1 分组的最小值,我只需要单个指定期间的最小值。我正在使用的实际数据库有 200 万多行,我怀疑我对 group_by(...) 的大量使用正在显着降低速度。

我查看的其他 Stack Overflow(和 Google 等)帖子也依赖于 group_by,也许这是处理这个问题的最快方法,我不知道,但我怀疑不是。

我尝试了以下方法,但没有用:data %>% select(where(data$Period_1 == "2020-04"))%>% min(data$Values, na.rm= TRUE),返回消息“错误:无法将逻辑向量转换为函数”

处理速度方面,提取条件最小值的最快方法是什么?包括使用 dplyr。

最佳答案

这是一个基本的 R 选项(如果您正在寻找速度)。我们可以对数据进行子集化,然后获取第三列(即 Values)的最小值。

min(data[data$Period_1 == "2020-04", ][,3], na.rm = TRUE)

# [1] 25

基准

enter image description here

关于r - 哪种方法可以最快地得出 R 数据框列的条件最小值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70966359/

相关文章:

r - 找邻居的邻居

html - Shiny 的 R : Alert message or modal dialog input:invalid

r - dply : order columns alphabetically in R

python - 使用 Pandas 读取数据(.dat 文件)

r - 确定三个值中最大值的最快/最简单的算法/函数

r - 我可以在 R 中描述吗?

r - 增加 geom_line 图的标签间距

r - 将结果 append 到列表中

r - 如何将 ggplot 对象存储在 R 的数据框中?

r - 对段落编号进行排序