我有一个包含两列col1
和col2
的数据框df
,其中包含NA
值。我需要分别计算它们的平均数(mean)
和标准差(sd)
。我已经使用以下代码分别计算了它们。
# Random generation
set.seed(12)
df <- data.frame(col1 = sample(1:100, 10, replace=FALSE),
col2 = sample(1:100, 10, replace=FALSE))
# Introducing null values
df$col1[c(3,5,9)] <- NA
df$col2[c(3,6)] <- NA
# sapply with return a value for a function
stat <- data.frame(Mean=numeric(length = length(df)), row.names = colnames(df))
stat[,'Mean'] <- as.data.frame(sapply(df, mean, na.rm=TRUE))
stat[,'Sd'] <- as.data.frame(sapply(df, sd, na.rm=TRUE))
我尝试使用下面的代码同时执行这两个操作。
#sapply with return more than one value
stat[,c('Mean','Sd')] <- as.data.frame(t(sapply(c(1:length(df)),function(x)
return(c(mean(df[,x]), sd(df[,x]))))))
由于我未能在最新的功能中删除NA
值,因此我得到了mean
和sd
的NA
输出。
您能否提供有关如何删除每个函数mean
,sd
的NA
值的想法。此外,请建议任何其他可能的智能方法。
vapply(df,function(x) c(mean(x,na.rm=TRUE),sd(x,na.rm=TRUE)),numeric(2))
。该代码将计算数据框df中每列的均值和标准差,并返回一个由这些值组成的矩阵。 - nicola