r - summarise_all,计数 n() 失败
问题描述
我有以下数据框:
df2 <-
structure(list(A = c(4, 5, 3, 3, 4, 4, 4, 5, 5, 4),
B = c(4, 5, 4, 4, 4, 4, 3, 5, 5, 4),
C = c(4, 5, 3, 4, 2, 4, 2, 5, 5, 4),
D = c(4, 5, 0, 0, 1, 4, 0, 0, 0, 0),
E = c(4, 5, 4, 4, 4, 4, 2, 5, 5, 5),
F = c(5, 5, 4, 4, 4, 4, 2, 5, 4),
G = c(5, 5, 4, 4, 2, 4, 2, 5, 5, 5),
H = c(5, 5, 4, 4, 3, 4, 3, 5, 5, 4),
K = c(5, 5, 4, 4, 3, 4, 2, 5, 5, 5),
L = c(5, 5, 4, 4, 3, 4, 2, 5, 5, 5)),
.Names = c("A", "B", "C", "D", "E", "F", "G", "H", "K", "L"),
row.names = c(NA, -10L),
class = c("tbl_df", "tbl", "data.frame"))
但是当我这样做时,不考虑“NA”:
library(dplyr)
library(tidyr)
df2 %>% gather(Type) %>% group_by(Type) %>% summarise_all(funs(mean(., na.rm = TRUE), sd(., na.rm = TRUE), n(),n1 = sum(!is.na(.)), n2 = sum(is.na(.))))
不考虑 NA 的结果:
“n()”、sum(!is.na(.) 或 sum(is.na(.)) 都没有得到正确的结果(我知道最后两个是相反的,只是为了确定。
解决方案
@ANG
谢谢,这可以解决问题,并且还显示了我在哪里走错了路。为了“更好”地工作,我在一个小子集上开发了查询,即我在问题中发布的那个。那个没有“自然”的 NA,我只是取出了一个值,并没有像 ANG 建议的那样用 NA 替换 ist。
在对完整数据运行查询后,我得到了我需要的东西!
感谢您指出!
推荐阅读
- postgresql - 服务器未正常关闭后 PostgreSQL 12.3 卡在恢复模式
- r - R 中的 TryCatch 异常处理
- java - Log4j2 想记录调用者的文件和行号
- android - Android 仪器测试在 Firebase 测试实验室崩溃,但在本地运行良好
- python - discord.py 的 Youtube 搜索命令
- reactjs - 健全的草稿预览不适用于块内容
- api - 为什么我无法获取此 API
- html - 什么时候最好使用 HTML 表示标签或 CSS 来设置元素样式?
- javascript - 如何在 XPath 中的特定字符串之后复制第一个表?
- javascript - 如何将“字符串”数据附加到本地存储