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 的观点,即条件突变通常最好通过分成两个单独的数据帧来完成。
我对 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 的观点,即条件突变通常最好通过分成两个单独的数据帧来完成。