r - 在R中的数据框中找到最小值
问题描述
我有一个非常大的数据框(下面的 dput 子集),我需要计算压力(press
),其中par
是最大值的 1%par
为什么我总是得到所有的NA?
miss <- function(x) ifelse(is.finite(x),x,NA)
depth <- test %>%
group_by(site,station) %>%
summarize(
euphotic=miss(min(press[par <= 0.001*max(par)], Inf, na.rm=TRUE))
)
depths
structure(list(station = c(2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L), press = c(2L, 8L,
12L, 18L, 22L, 26L, 30L, 34L, 40L, 46L, 54L, 60L, 64L, 68L, 74L,
78L, 82L, 88L, 92L, 98L, 104L, 108L, 114L, 118L, 124L, 128L,
132L, 138L, 142L, 146L, 2L, 8L, 12L, 18L, 22L, 26L, 30L, 34L,
40L, 46L, 54L, 60L, 64L, 68L, 74L, 78L, 82L, 88L, 92L, 98L, 104L,
108L, 114L, 118L, 124L, 128L, 132L, 138L, 142L, 146L, 2L, 8L,
12L, 18L, 22L, 26L, 30L, 34L, 40L, 46L, 54L, 60L, 64L, 68L, 74L,
78L, 82L, 88L, 92L, 98L, 104L, 108L, 114L, 118L, 124L, 128L,
132L, 138L, 142L, 146L, 2L, 8L, 12L, 18L, 22L, 26L, 30L, 34L,
40L, 46L), par = c(58.98732, 31.39843, 20.79014, 11.61261, 7.75838,
5.32665, 4.3787, 3.73578, 2.95239, 2.30608, 1.62347, 1.28806,
1.09946, 0.93665, 0.734, 0.62545, 0.52283, 0.39962, 0.33383,
0.24813, 0.18591, 0.1487, 0.10228, 0.07633, 0.04387, 0.02744,
0.01357, 0.00096, 0, 0, NA, 68.57304, 36.01596, 14.94555, 8.8113,
5.70737, 3.85764, 2.71274, 1.61768, 0.85245, 0.40941, 0.25115,
0.18174, 0.13309, 0.07703, 0.0494, 0.03003, 0.00191, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 23.45076, 12.82472, 5.89698, 3.96756,
3.29165, 2.74749, 2.30578, 1.77944, 1.39889, 0.98467, 0.77704,
0.65316, 0.55382, 0.42937, 0.34924, 0.29366, 0.2176, 0.17315,
0.12327, 0.08098, 0.05937, 0.0341, 0.01787, 0.00258, 0, 0, 0,
0, 0, NA, 7.10779, 4.59278, 2.56041, 1.98354, 1.61956, 1.32333,
1.10579, 0.83852, 0.62653), par.up = c(107.09531, 42.19624, 30.38343,
14.74241, 13.44021, 10.13227, 8.01075, 6.47363, 4.65497, 3.42635,
2.46751, 1.94465, 1.65935, 1.42163, 1.06725, 0.90339, 0.76596,
0.59094, 0.49598, 0.37735, 0.25879, 0.21226, 0.15326, 0.11898,
0.072, 0.05308, 0.03393, 0.01408, 0.00119, 0, 306.39386, 108.48346,
61.89079, 26.94455, 16.56027, 10.51363, 6.91425, 4.56686, 2.58844,
1.3741, 0.67524, 0.44539, 0.33409, 0.25119, 0.16086, 0.11906,
0.06536, 0.02745, 0.0135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48.68698,
15.12474, 7.69357, 3.38269, 2.04553, 1.65505, 1.3807, 1.16209,
0.91962, 0.7475, 0.51066, 0.3945, 0.32956, 0.27063, 0.20145,
0.1658, 0.13006, 0.08018, 0.0589, 0.02948, 0.01075, 0.00014,
0, 0, 0, 0, 0, 0, 0, 0, 10.49227, 4.28379, 3.01506, 1.81555,
1.37034, 1.07562, 0.89375, 0.77771, 0.62027, 0.47772), site =
structure(c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L), .Label = "River", class = "factor")), row.names = c(NA,
100L), class = "data.frame")
解决方案
您可以filter
获取范围内的值并获取该min
值。如果您需要最终输出中的所有组组合,请使用complete
library(dplyr)
library(tidyr)
test %>%
group_by(site,station) %>%
filter(par <= 0.001*max(par, na.rm = TRUE)) %>%
summarize(euphotic= min(press, na.rm = TRUE)) %>%
ungroup %>%
complete(site = unique(test$site), station = unique(test$station))
# site station euphotic
# <fct> <int> <int>
#1 River 2 124
#2 River 3 78
#3 River 4 118
#4 River 5 NA
推荐阅读
- java - 在 java 中创建 BufferedImage 数组时出错
- javascript - 为什么无法从 redux 读取我的 properties 属性?
- node.js - 使用对象数组过滤字符串文档
- google-chrome - 可轻松编辑本地存储的 Chrome 扩展程序
- azure-devops - 在 Azure 文件副本中,您可以将副本复制到根容器中吗?
- python - 如何加速 Python 中的顺序二进制写入
- javascript - React.js 在 useState 设置默认值之前运行 useEffect
- c++ - 如何在自己的成员函数中重置 C++ 类
- node.js - Braintree with node invalidkeysError
- alpine.js - 如何将 alpinejs 主文件拆分为几个小文件?