r - 按 R 组汇总数据
问题描述
我试图获得具有 3 个重复的样本的均值、标准差、简历。数据如下所示:
Sample Titer
1 1000
1 1002
1 1006
2 2003
2 2090
2 NA
3 3020
3 3020
3 3498
我想以excel格式输出
Sample mean sd cv
1
2
3
我写了这个:
cv <- function(x) 100*( sd(x)/mean(x))
Re <- aggregate(titer ~ Sample, df, function(x) c(mean = mean(x), sd = sd(x), cv=cv(x)))
结果看起来很好,除了不被视为新列sd
并且cv
没有列名 str(Re) 仅给出“Sample”和“titer”2 列。为什么?有什么解决办法吗?
然后我尝试使用 group_by(Sample)%>%summarize(df, titer.mean=mean(titer), sd=sd(titer), cv=cv(titer)) 不起作用,给出了 NA 值。
解决方案
您需要NA
从所有计算中排除值。
library(dplyr)
cv <- function(x) 100*( sd(x, na.rm = TRUE)/mean(x, na.rm = TRUE))
df %>%
group_by(Sample)%>%
summarize(titer.mean=mean(Titer, na.rm = TRUE),
sd=sd(Titer, na.rm = TRUE),
cv=cv(Titer))
您可以执行相同的操作,aggregate
但它会将矩阵中的所有值保存在一列中。
tmp <- aggregate(Titer ~ Sample, df, function(x) c(mean = mean(x, na.rm = TRUE),
sd = sd(x, na.rm = TRUE), cv=cv(x)))
result <- cbind(tmp[1], tmp$Titer)
推荐阅读
- python - 将特定列范围的值放在同一数据框的其他现有列中
- activemq-artemis - 在 Apache Artemis ActiveMQ 中,是否可以将转移目标配置为另一个地址的源?
- javascript - MongoDB:在每个文档中使用不同的数据更新许多文档
- powershell - 在 powershell 中组合多个 Get-Content cmdlet
- python - 找不到 pip 轮中 .so 文件中的动态链接
- javascript - 反应如何将 setState 与 Map 值一起使用
- codesandbox - 删除 codesandbox.io 沙箱
- html - HTML/CSS 制作进度条
- c# - 在剃刀中访问枚举的原始值
- javascript - 使用 D3 附加到现有的 svg 文件