我有数据框具有批次ID,并且每个批次都执行了六次测试的结果.数据如下所示:
batch_id test1 test2 test3 test4 test5 test6
001 0.121 NA 0.340 0.877 0.417 0.662
002 0.229 0.108 NA 0.638 NA 0.574
Run Code Online (Sandbox Code Playgroud)
(此数据框中有几百行,每个batch_id只有一行)
我正在寻找一种方法来计算每个batch_id(每行)有多少个NA.我觉得这应该可以使用最多几行R代码,但我实际编码时遇到了麻烦.有任何想法吗?
在基地R我会做以下事情:
d <- data.frame(a = 1:4, b = 4:1, c = 2:5)
apply(d, 1, which.max)
Run Code Online (Sandbox Code Playgroud)
随着dplyr我可以做到以下几点:
library(dplyr)
d %>% mutate(u = purrr::pmap_int(list(a, b, c), function(...) which.max(c(...))))
Run Code Online (Sandbox Code Playgroud)
如果d我需要指定另一列,但我希望它可以使用任意数量的列。
从概念上讲,我想要类似的东西
pmap_int(list(everything()), ...)
pmap_int(list(.), ...)
Run Code Online (Sandbox Code Playgroud)
但这显然行不通。我将如何规范地解决这个问题dplyr?