簡體   English   中英

為dplyr中的每個函數保存na.rm = TRUE

[英]Saving na.rm=TRUE for each function in dplyr

我正在使用dplyr匯總功能。 我的數據包含NA,因此我需要為每個調用包含na.rm = TRUE。 例如:

group <- rep(c('a', 'b'), 3)
value <- c(1:4, NA, NA)
df = data.frame(group, value)

library(dplyr)
group_by(df, group) %>% summarise(

          mean = mean(value, na.rm=TRUE),

          sd = sd(value, na.rm=TRUE),

          min = min(value, na.rm=TRUE))

有沒有辦法只寫一次參數na.rm = TRUE,而不是每行寫一次?

您應該使用summarise_at ,它可以為提供的列計算多個函數並設置在它們之間共享的參數:

df %>% group_by(group) %>% 
  summarise_at("value", 
               funs(mean = mean, sd = sd, min = min), 
               na.rm = TRUE)

如果您打算僅將函數應用於一列,則可以使用filter(!is.na())以便僅過濾出該變量的所有NA值(即其他變量中的NA不會影響該過程) )。

group <- rep(c('a', 'b'), 3)
value <- c(1:4, NA, NA)
df = data.frame(group, value)

library(dplyr)

group_by(df, group) %>% 
  filter(!is.na(value)) %>%
  summarise(mean = mean(value),
            sd = sd(value),
            min = min(value))

# # A tibble: 2 x 4
#    group  mean       sd   min
#   <fctr> <dbl>    <dbl> <dbl>
# 1      a     2 1.414214     1
# 2      b     3 1.414214     2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM