r - group_by 表并在 R 中列的总和为 0 时更改值到 NA
问题描述
我有一张桌子,并按两列分组。在每个组中,我想更改几列。如果(组中)某列的总和为 0,则该列中的每一行都应更改为 NA。最后我想要起始表,但用 NA 而不是 0。
我试过了:
table_neu <- table %>%
group_by(A,B) %>%
mutate_at(.vars = vars(C_01:C_12),
.funs = funs(case_when(
sum(.) == 0 ~ NA,
TRUE ~ .)),
na.rm = TRUE) %>%
ungroup()
我收到此错误,不知道是什么问题。
情况 3 (
colsum(C_01) == 0 ~ NA
) 必须是一个双边公式,而不是一个逻辑 vectorTraceback:
解决方案
尝试使用:
library(dplyr)
table_neu <- table %>%
group_by(A,B) %>%
mutate_at(vars(C_01:C_12),~case_when(
sum(., na.rm = TRUE) == 0 ~ NA_real_,
TRUE ~ .)) %>%
ungroup()
推荐阅读
- python - Selenium Chrome 看不到浏览器日志 InvalidArgumentException
- java - 想用UDP服务器开发spring应用
- php - 在 Codeigniter 中的 2 个日期之间查询,仅来自 Datetime 的日期
- javascript - 将 Uint8Array 转换为 Float32Array
- python - 使用 python 3.6 在 Ubuntu 中导入“枚举”错误
- node.js - Node.js JWT 令牌
- python-3.x - 如何在 python 的 tkinter 的网格中显示图像?
- express - 路由器模块在 Express 中的作用是什么?
- html - 渲染公式后 Mathjax 页面大小增加
- firebase - 如果用户 ID 在文档中,则允许用户读取子集合