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 |
+-----------+-----+-----+------+------+