Melt 能够去除某些变量的 NA 而不是其他变量?

Melt able to remove NA's for some variables but not others?

我对 R 中 reshape2 包的 melt 函数有疑问。

我想融化一个多维数组,为一些变量保留 NA,但为其余变量删除 NA。一个例子来说明我不想要什么:

library(reshape2)
subtotals <- tapply(
  mtcars$mpg,
  list(mtcars$cyl,mtcars$disp,mtcars$hp,mtcars$drat,mtcars$wt), 
  sum
)
subtotals_melted <- melt(subtotals, na.rm = T) # removes NA's for all vars

我知道 melt 函数中有一个 na.rm= 选项,但它删除了所有变量的 NA。由于隐式 NA's,此类小计操作通常会占用相当多的内存,在被融化后,我想知道是否有更快、更节省内存的方法来实现这样的用例.

提前致谢!

library(dplyr)
library(magrittr)

result =
  mtcars %>%
  group_by(cyl, disp, hp, drat, wt) %>%
  summarize(sum_mpg = sum(mpg, na.rm = TRUE) )

这将在分组变量中保留 NA 级别,但不保留 mpg。不过,总的来说,我同意 Michael Bellhouse 的观点,即条件突变通常最好通过分成两个单独的数据帧来完成。