r - 在 R 中添加缺少数据的长格式术语
问题描述
我正在尝试添加 col1 在 name 变量下出现的次数,而忽略缺失值。它应该是 2 倍,但是当我使用长度和计数函数时,它们总是返回 3。
M = data.frame( Name = c('name','name1','name','name1','name','name1'), Col1 = c(NA,1,3,4,5,NA) , Col2 = c(1,1,NA,5,8,4))
myData <- aggregate(M[,2],
by = list(VAR = M$Name),
FUN = function(x) c(mean = mean(x,na.rm=T), sd = sd(x,na.rm=T),n=length(x)))
myData <- do.call(data.frame, myData)
myData
#> x.n
# 3
#I want it to say 2 becuase the number only appears twice this variable.
#> x.n
# 2
解决方案
这是一个tidyverse
解决方案
library(tidyverse);
M %>%
gather(k, v, -Name) %>%
filter(complete.cases(.) & k == "Col1") %>%
group_by(Name) %>%
summarise(mean = mean(v), sd = sd(v), n = n())
## A tibble: 2 x 4
# Name mean sd n
# <fct> <dbl> <dbl> <int>
#1 name 4.00 1.41 2
#2 name1 2.50 2.12 2
说明:我们从宽到长重新整形,删除NA
条目通过的行,并计算- 分组条目complete.cases
所需的汇总统计信息。Name
推荐阅读
- mysql - MySql 将行放入单个 JSON 对象中
- python - 我想设置 cookie 字段和字符集来使用 curl 命令处理汉字
- r - 根据字符串条件将每小时数据折叠为每日数据并创建虚拟变量
- angular - Jasmine:监视由另一个函数调用的导出函数不起作用
- .net - IIS 服务器中的 SSL 证书 (.pfx) 文件问题
- git-config - 是否可以在 .gitconfig 中编写多行别名?
- c++ - 未选中复选框时,有没有办法隐藏按钮?
- sql - 如何在 SQL/Spark/GraphFrames 中进行这种转换
- python-3.x - 使用 urllib 401 Unauthorized 的 ActiveMQ REST 管理 API 身份验证
- c# - 如何在多个连接场景中显示枚举值?