如何解决按组 R
我正在尝试获得具有 3 个重复的样本的均值、标准差和 cv。数据如下所示:
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) 只给出“样本”和“滴度”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,cv=cv(Titer))
您可以对 aggregate
执行相同操作,但它将矩阵中的所有值保存在一列中。
tmp <- aggregate(Titer ~ Sample,df,function(x) c(mean = mean(x,sd = sd(x,cv=cv(x)))
result <- cbind(tmp[1],tmp$Titer)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。