如何在summarize + across中调整均值

3

所以基本上我希望得到相应的内容。

mean(data$Column1, na.rm = TRUE) 

以下为代码:

Data<- Spread_sheet %>%
  group_by(Team) %>% 
  summarise(across(
    .cols = everything(),
    .fns = list(mean = mean), #mean(na.rm = TRUE) does not work
    .names = "{.fn} {.col}"
  )) 

感谢您!

6
尝试使用.fns = list(mean = ~ mean(.x, na.rm = TRUE))。这将计算平均值并删除缺失值。 - Darren Tsai
1个回答

0
你需要提供一个函数(!)给.fns,其中设置了na.rm = TRUE。有很多可能性:
library(dplyr)

### 1 Function
my_mean <- function(..., na.rm = TRUE) mean(..., na.rm = na.rm)

mtcars %>% 
   group_by(am) %>%
   summarise(across(where(is.numeric), 
                    .fns = list(mean = my_mean)))

### 2 Lambda Function
mtcars %>%
   group_by(am) %>%
   summarise(across(where(is.numeric), 
                    .fns = list(mean = \(x) mean(x, na.rm = TRUE))))

### 3 Dplyr Function Style
mtcars %>%
   group_by(am) %>%
   summarise(across(where(is.numeric), 
                    .fns = list(mean = ~ mean(.x, na.rm = TRUE))))  

### 4 Using library `functional`
library(functional)
mtcars %>%
   group_by(am) %>%
   summarise(across(where(is.numeric), 
                    .fns = list(mean = Curry(mean, na.rm = TRUE)))) 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接