#r #database #lapply
#r #База данных #lapply
Вопрос:
Я вычисляю квантили, триместры и т.д. Моего фрейма данных
table1 <- data.frame(
"Q25"= stack(lapply(database_PE[4:7], quantile, prob = c(0.25))),
"Q50"= stack(lapply(database_PE[4:7], quantile, prob = c(0.50))),
"Q75"= stack(lapply(database_PE[4:7], quantile, prob = c(0.75))),
"IQR" = stack(lapply(database_PE[4:7], IQR)),
"Trimean" = stack(lapply(database_PE[4:7], trimean)),
"Skewness" = stack(lapply(database_PE[4:7], skewness)))
Результат, как я и ожидал, следующий:
Q25.values Q25.ind Q50.values Q50.ind Q75.values Q75.ind IQR.values IQR.ind Trimenan.values
1 23.1 Air.Temp.Max 30.6 Air.Temp.Max 37.8 Air.Temp.Max 14.7 Air.Temp.Max 30.525
2 7.1 Air.Temp.Min 13.5 Air.Temp.Min 21.0 Air.Temp.Min 13.9 Air.Temp.Min 13.775
3 14.4 Air.Temp.Mean 21.9 Air.Temp.Mean 29.9 Air.Temp.Mean 15.5 Air.Temp.Mean 22.025
4 0.0 Precipitation.Total 0.0 Precipitation.Total 0.0 Precipitation.Total 0.0 Precipitation.Total 0.000
Trimenan.ind Skewness.values Skewness.ind
1 Air.Temp.Max 34.11678 Air.Temp.Max
2 Air.Temp.Min 34.56093 Air.Temp.Min
3 Air.Temp.Mean 34.07599 Air.Temp.Mean
4 Precipitation.Total 39.82098 Precipitation.Total
Тем не менее, я пытаюсь найти способ удалить повторяющиеся столбцы с именами строк Air.Temp.Max, Air.Temp.Min, Air.Temp.Среднее значение и осадки.Итого. Что я должен написать в функции lapply, чтобы удалить эти столбцы?
Ответ №1:
Вы можете сделать это за один lapply
вызов и привязать набор данных.
data <- do.call(rbind.data.frame, lapply(database_PE[4:7], function(x)
c(quantile(x, probs = c(0.25, 0.5, 0.75)), IQR(x), trimean(x), skewness(x))))
names(data) <- c('Q25', 'Q50', 'Q75', 'IQR', 'trimness', 'skewness')
Это позволит сохранить rownames как rownames, если вы хотите, чтобы это было сделано в виде отдельного столбца :
data$rowname <- rownames(data)
Комментарии:
1. Как я могу добавить в эту функцию do.call значение na.rm = TRUE?
2. Я думаю, что
do.call
не нужноna.rm
, но вам нужно добавить его для отдельных функций, таких какIQR(x, na.rm = TRUE)