R dplyr purr查找跨多个列的列最小值的索引值和索引处相应的行值

R dplyr purr查找跨多个列的列最小值的索引值和索引处相应的行值,r,dplyr,purrr,R,Dplyr,Purrr,我有一个空气污染值数据集,每个数据集对应一个特定的监测站。我已经计算了每个空气污染变量和站点代码的空值数。现在我想找到每种污染物的最小零排放量的监测站 以下是数据集: nulls_by_code # A tibble: 34 x 9 code nox no2 o3 so2 co pm10_raw pm10 pm25 <chr> <int> <int> <int> <int> <int>

我有一个空气污染值数据集,每个数据集对应一个特定的监测站。我已经计算了每个空气污染变量和站点代码的空值数。现在我想找到每种污染物的最小零排放量的监测站

以下是数据集:

nulls_by_code
# A tibble: 34 x 9
   code    nox   no2    o3   so2    co pm10_raw  pm10  pm25
   <chr> <int> <int> <int> <int> <int>    <int> <int> <int>
 1 BL0    7195  1386  1234  4933 24408    24408  2981  2092
 2 BQ7     240   240   229 24392 24392      310   326 24392
 3 BQ8   24296 24296 24296 24296 24296    24296   323 24296
 4 CR8   24395 24395 24395 24395 24395    24395 24395   733
 5 CT3    1055  1055 24393 24393 24393     2365   971  2888
 6 EI3    1994  1994 24283 24283 24283    24283  3801 24283
 7 EN7     271   271 24392 24392 24392    24392 24392 24392
 8 HG4     205   205  1048 24392 24392    24392 24392 24392
 9 HP1   24391  8610  9596 24391 24391    24391  7987  8255
10 HP3   15633 15633 15633 15633 15633    15633 15633 15633
# … with 24 more rows
我看过: 及 但这些都没有让我进入dplyr数据帧涅盘

结果应该是这样的,或者是转置版本的,以确保列具有相同的数据类型,并且不会混用


+-----------+-----+-----+------+------+
| row_name  | nox | no2 | pm10 | pm25 |
+-----------+-----+-----+------+------+
| min_value | 205 | 205 | 323  | 733  |
| min_code  | HG4 | HG4 | BQ8  | CR8  |
+-----------+-----+-----+------+------+

我怀疑dplyr grandmaster@akrun将能够在10秒内修复此问题…:-)
感谢您提供的任何帮助。

通过
tidyr::pivot\u longer
转换为长格式,并使用
dplyr::top\n
可以这样实现:

由于您需要每个污染物的最小值,我们首先按
污染物
分组,并通过使用
top\n(1,-value)
获得包含每组最小值的一行,其中
value
pivot\u longer
指定的默认名称

nulls_by_code%
pivot_更长(-code,names_to=“pollutant”)%>%
组别按(污染物)%>%
顶部(1,-值)
#>#tibble:8 x 3
#>#类别:污染物[8]
#>代码污染物值
#>         
#>1 BL0 so2 4933
#>2 BQ7 o3 229
#>3 BQ7 pm10_原始310
#>4 BQ8 pm10 323
#>5 CR8 pm25 733
#>6 HG4 nox 205
#>7 HG4 no2 205
#>8 HP3 co 15633

谢谢stefan。请您解释一下您的解决方案好吗?top_n(1,-value)做什么?(:对不起。
top_n
根据一列返回前n行(这里是前1行)。如果我们想用最小值替换底部n行,我们可以简单地使用-value。顺便说一句:“value”pivot_不再用作包含值的列的默认名称。感谢您的解释和帮助。我不确定为什么它已经被否决,因为我在StackOverflow上发布之前花了3个小时试图自己修复它。我认为这是一个相当顽强的努力!我将研究pivot_longerDon,我也不知道。我知道我自己要在网上找到正确的答案并不容易,即使它可能已经被回答了。但别担心。这种情况有时会发生。谢谢stefan的帮助,谢谢你的好话,我真的很感激!我甚至在我的帖子中尝试了一些幽默,让这里成为一个更令人愉快的地方:0)谢谢你花时间回答

+-----------+-----+-----+------+------+
| row_name  | nox | no2 | pm10 | pm25 |
+-----------+-----+-----+------+------+
| min_value | 205 | 205 | 323  | 733  |
| min_code  | HG4 | HG4 | BQ8  | CR8  |
+-----------+-----+-----+------+------+