微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

按组 R

如何解决按组 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)))

结果看起来不错,只是 sdcv 不被视为新列并且没有列名 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 举报,一经查实,本站将立刻删除。