У меня есть dataframe df
с двумя столбцами col1
, col2
, включает в себя NA
значения в них. Я должен рассчитать mean
, sd
для них. Я вычислил их отдельно с кодом ниже.Обработка значений NA в приложениях, возвращающих более одного значения
# 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
значения в последней функции, я получаю выход как NA
для обоих mean
, sd
.
Не могли бы вы дать представление о том, как удалить NA
значений для каждой функции mean
, sd
. Также, пожалуйста, предложите любые другие возможные умные способы.
Попытка: 'vapply (df, function (x) c (среднее (x, na.rm = TRUE), sd (x, na.rm = TRUE)), числовое (2))' – nicola
@nicola Спасибо, он работал по мере необходимости. – Prradep