Попытка выяснить, как вернуть среднее значение каждого столбца во фрейме данных, используя список - PullRequest
0 голосов
/ 21 апреля 2019

У меня есть фрейм данных, который показывает среднюю продолжительность жизни страны с 1800 по 2018. Столбцы помечены так: XYear.Например: X2000.Я сделал функцию, которая возвращает среднее значение выбранного столбца.Вот часть, с которой я борюсь: задание просит меня создать список со средним значением каждого столбца во фрейме данных, используя вышеупомянутую функцию.

Я попытался создать элемент списка, который бывыделите все строки и столбцы, кроме первых (выделите их с помощью [-1, -1]).

life_exp <- read.csv("data/life_expectancy_years.csv", stringsAsFactors = FALSE)

Напишите функцию get_col_mean(), которая принимает имя столбца и фрейм данных и возвращает среднее значение этого столбца.Убедитесь, что правильно обрабатывает значения NA

get_col_mean <- function(col_name, data_frame_name) {
return(mean(data_frame_name[, col_name], na.rm = TRUE))
}

Создайте список col_means, в котором есть среднее значение для каждого столбца во фрейме данных (кроме столбца Country).Вы должны использовать свою функцию выше.

Я попробовал это: column_means = get_col_mean (life_exp $ life_exp [, -1], life_exp)

Но я получил это сообщение об ошибке:

В mean.default (data_frame_name [, col_name], na.rm = TRUE): аргумент не является числовым или логическим: возвращает NA

1 Ответ

0 голосов
/ 21 апреля 2019

Я полагаю, вы неправильно используете оператор $. Это используется для захвата одного столбца по имени.

#data frame
z <- data.frame(l = c(1,2,3,4), y = c(4,3,2,3), c =c(1,'',3,4)))

z$l
[1] 1 2 3 4

z$z
NULL

#numeric (note that I am providing the column name as a string
get_col_mean("l", z)

#outout
[1] 3

#this is the same as putting NULL in
get_col_mean(z$z, z)

#your presumed error
[1] NA
Warning message:
  In mean.default(data_frame_name[, col_name], na.rm = TRUE) :
  argument is not numeric or logical: returning NA

Если вы хотите применить это к каждому столбцу, скорее всего, вы ищете цикл for или семейство функций apply.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...