如何将na.rm作为参数传递给tapply?
我想从一个数据帧计算平均值和sd,其中一列为参数,一列为组标识符。使用如何将na.rm作为参数传递给tapply?,r,tapply,na.rm,R,Tapply,Na.rm,我想从一个数据帧计算平均值和sd,其中一列为参数,一列为组标识符。使用tapply时如何计算它们?我可以使用sd(v1,group,na.rm=TRUE),但在使用tapply时,无法将na.rm=TRUE放入语句中。 省略。na没有选项。我有一大堆参数,当排除所有缺少一个值的行时,我必须一步一步地检查它们,而不会丢失数据帧的一半 data("weightgain", package = "HSAUR") tapply(weightgain$weightgain, list(weightgain
tapply
时如何计算它们?我可以使用sd(v1,group,na.rm=TRUE)
,但在使用tapply
时,无法将na.rm=TRUE
放入语句中。
省略。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
x我想这应该是你想要的
选择所需的列:
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))
只需在tapply
功能中设置na.rm=TRUE
:
tapply(weightgain$weightgain, list(weightgain$source, weightgain$type), mean, na.rm=TRUE)
差不多!我可以将其应用于表的几个组件,还是必须循环遍历参数列表tapply(df[c(“x”,“y”)],df$group,sd,na.rm=TRUE)
左右?这个问题没有意义。使用help(tapply)
您应该看到有一个..
参数,该参数被描述为提供将命名项传递给FUN函数的承诺。使用代码时出现了什么错误:tapply(df$V1,df$group,sd,na.rm=TRUE)
我同意。被接受的答案似乎更复杂,而这一个就像一个魅力。