首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >`summarise_each_()`在dplyr0.7.0中被废弃。请用“越()”代替。“汇总()”输入‘.1’的问题

`summarise_each_()`在dplyr0.7.0中被废弃。请用“越()”代替。“汇总()”输入‘.1’的问题
EN

Stack Overflow用户
提问于 2020-09-18 16:54:23
回答 2查看 2.7K关注 0票数 1

我有这个,它很有用:

代码语言:javascript
代码运行次数:0
运行
复制
data %>%
        select_if(function(x) any(is.na(x))) %>% 
        summarise_each(funs(sum(is.na(.))))

警告消息:从dplyr0.7.0开始不推荐summarise_each()。请改用across()

当我更改sumarise_each()时:

代码语言:javascript
代码运行次数:0
运行
复制
data %>%
        select_if(function(x) any(is.na(x))) %>% 
        summarise(across(funs(sum(is.na(.)))))

这种情况发生在:

错误:summarise()输入..1的问题。

X必须具有有效下标向量的子集列。

x有错误的类型fun_list

ℹ它必须是数字或字符。

输入..1across(funs(sum(is.na(.))))

我想用跨函数更新我的代码。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-09-18 18:03:22

这样做的方式是:

代码语言:javascript
代码运行次数:0
运行
复制
library(dplyr)
df %>%
  summarize(across(where(~any(is.na(.)), ~sum(is.na(.)))) 

starwars %>% 
  summarise(across(where(~any(is.na(.))), ~sum(is.na(.))))

 height  mass hair_color birth_year   sex gender homeworld species
   <int> <int>      <int>      <int> <int>  <int>     <int>   <int>
1      6    28          5         44     4      4        10       4

您不再需要select_ifacross()where()across()中允许您执行逻辑检查。然后提供总结功能。~表示法允许您执行引用数据的函数,其中点引用eahc列中的数据。

票数 1
EN

Stack Overflow用户

发布于 2020-09-18 18:17:45

我认为你想做的是

代码语言:javascript
代码运行次数:0
运行
复制
    library(dplyr)
    df <- data.frame(id=c("001","002"), A = c(0,0), B= c(NA,0), C=c(NA,1))
    df

         id  A  B  C
1        001 0 NA NA
2        002 0  0  1


    df %>%
    select(where(function(x) any(is.na(x)))) %>%
    rowwise %>%
    mutate(sumNA = sum(is.na(c_across(everything()))))

    # A tibble: 2 x 3
    # Rowwise: 
       B      C    sumNA
     <dbl>  <dbl>  <int>
  1    NA    NA     2
  2    0     1      0

这将选择所有包含NA的列,然后添加一个新列,该列显示每行中有多少NA

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63959836

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档