gpt4 book ai didi

r - 如何将 na.rm 作为参数传递给 tapply?

转载 作者:行者123 更新时间:2023-12-04 01:35:17 24 4
gpt4 key购买 nike

我想从数据框中计算均值和标准差,其中一列用于参数,一列用于组标识符。使用 tapply 时如何计算它们?我可以用 sd(v1, group, na.rm=TRUE) ,但不适合 na.rm=TRUE使用 tapply 时进入语句.omit.na是没有选择。我有一大堆参数,并且在排除具有一个缺失值的所有行时,必须逐步检查它们而不会丢失一半的数据帧。

data("weightgain", package = "HSAUR")
tapply(weightgain$weightgain, list(weightgain$source, weightgain$type), mean)

这同样适用于 by陈述。
x<-c(1,2,3,4,5,6,7,8,9,NA)
y<-c(2,3,NA,3,4,NA,2,3,NA,2)
group<-rep((factor(LETTERS[1:2])),5)
df<-data.frame(x,y,group)
df

by(df$x,df$group,summary)
by(df$x,df$group,mean)

sd(df$x) #result: NA
sd(df$x, na.rm=TRUE) #result: 2.738613

任何想法如何完成这项工作?

最佳答案

我认为这应该做你想做的。

  • 选择你想要的列:
    v = c("x", "y")#or
    v = colnames(df)[1:2]
  • 使用 sapply迭代 v并将值传递给 tapply :
    sapply(v, function(i) tapply(df[[i]], df$group, sd, na.rm=TRUE))
  • 关于r - 如何将 na.rm 作为参数传递给 tapply?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14172556/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com