1

我有一个包含缺失值的数据框。

# Create dataframe
df <- data.frame(Athlete = c(c(replicate(200,"Ali"), c(replicate(200,"Tyson")))),
                 Score = replicate(400, sample(c(1:20, NA), 1, rep = TRUE)))

我的函数对因子进行分组,然后计算不包含 NA 值的行。

library(dplyr)
Result <- df %>%
  dplyr::group_by(Athlete, .drop = TRUE) %>%
  dplyr::summarise_each(list(~sum(!is.na(.))))

我得到了想要的结果。但是有一个警告信息。

`summarise_each_()` is deprecated as of dplyr 0.7.0.
Please use `across()` instead.

我正在尝试更新代码库,以便停止警告消息。

注意:警告信息还说;

This warning is displayed once every 8 hours.
Call `lifecycle::last_warnings()` to see where this warning was generated. 

因此,如果没有警告消息,请重新启动 Rstudio 并重新运行脚本以生成警告消息。

4

1 回答 1

4

summarise_each 已替换为summarise_at/summarise_all现在已替换为acrossin dplyr 1.0.0

library(dplyr)
df %>%
 group_by(Athlete) %>%
 summarise(across(everything(), ~sum(!is.na(.))))

#  Athlete Score
#  <chr>   <int>
#1 Ali       189
#2 Tyson     195

虽然,如果您只有一列要汇总,如图所示,您可以直接执行此操作:

df %>%
  group_by(Athlete, .drop = TRUE) %>%
  summarise(Score  = sum(!is.na(Score)))
于 2020-07-06T12:24:30.157 回答