我正在尝试用值计算 data.frame 中几列(第一列除外)的平均值和标准偏差NA
。
我尝试过colMeans
,sapply
等创建一个循环,该循环贯穿 data.frame,然后将均值和标准差存储在单独的表中,但不断收到“FUN”错误。任何帮助都会很棒。谢谢
一种
我正在尝试用值计算 data.frame 中几列(第一列除外)的平均值和标准偏差NA
。
我尝试过colMeans
,sapply
等创建一个循环,该循环贯穿 data.frame,然后将均值和标准差存储在单独的表中,但不断收到“FUN”错误。任何帮助都会很棒。谢谢
一种
sapply(df, function(cl) list(means=mean(cl,na.rm=TRUE), sds=sd(cl,na.rm=TRUE)))
col1 col2 col3 col4 col5
means 3 8 12.5 18.25 22.5
sds 1.581139 1.581139 1.290994 1.707825 1.290994
as.data.frame( t(sapply(df, function(cl) list(means=mean(cl,na.rm=TRUE),
sds=sd(cl,na.rm=TRUE))) ))
means sds
col1 3 1.581139
col2 8 1.581139
col3 12.5 1.290994
col4 18.25 1.707825
col5 22.5 1.290994
您应该使用的函数(例如colMeans
)几乎都有一个名为的参数na.rm
,默认为FALSE
. 只要去做colMeans(x = your_df, na.rm = TRUE)
,你就会很高兴。与仅mean()
在您想逐列进行时使用相同。
以下示例代码可能很有用。
# Create a 5 column dataframe that contains some NAs
col1 <- c(1,2,3,4,5)
col2 <- c(6,7,8,9,10)
col3 <- c(11,12,13,14,NA)
col4 <- c(16,NA,18,19,20)
col5 <- c(21,22,23,24,NA)
dataframe <- data.frame(col1,col2,col3,col4,col5)
# Apply the mean() function to all but the first column of the dataframe
apply(dataframe[,2:ncol(dataframe)], 2, function(x) mean(x, na.rm=TRUE))
# Check that the returned values are correct:
mean(col2)
mean(col3, na.rm=TRUE)
mean(col4, na.rm=TRUE)
mean(col5, na.rm=TRUE)
对于标准差,替换mean()
为sd()
。