Попытка сделать функцию R для получения имени переменной - PullRequest
1 голос
/ 21 апреля 2020

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

max(dfStates$Jul2011)

Теперь, поместив это в функцию, у меня есть:

lotsOfPeeps<-function(dfStates){ highestPop<-max(dfStates$Jul2011) return(highestPop)}

Итак, когда я запускаю lotsOfPeeps(dfStates) прямо сейчас, он просто возвращает наибольшее значение населения. Как бы я добавил к нему, чтобы получить название штата?

Ответы [ 2 ]

1 голос
/ 21 апреля 2020

Изменение, чтобы сделать функцию более гибкой. Скорее всего, это будет медленнее, чем which.max.

lotsOfPeeps<-function(df, column,target_column){
  highestPop<-df[df[column]==max(df[column]),target_column]

  return(highestPop)
  }

Чтобы получить его в "столбчатом" формате, мы можем обернуть highestPop в [[, как предложено @akrun, таким образом:

highestPop<-df[df[column]==max(df[column]),][target_column]

Тестирование с ирисовой диафрагмой:

lotsOfPeeps(iris,"Sepal.Length","Species") # name maintained,can be better named
[1] virginica
Levels: setosa versicolor virginica

Результат, если наивысший рейтинг включен в [[:

lotsOfPeeps(iris,"Sepal.Length","Species")
      Species
132 virginica
1 голос
/ 21 апреля 2020

Используйте which.max, который будет возвращать индекс наибольшего значения населения и использовать его для получения соответствующего названия штата. Предполагая, что столбец с именем состояния называется StateName, вы можете сделать

lotsOfPeeps<-function(dfStates){
   hihest_pop_state <- dfStates$StateName[which.max(dfStates$Jul2011)]
   return(hihest_pop_state)
}

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