Как использовать функцию If в R для создания столбца с использованием нескольких условий - PullRequest
0 голосов
/ 02 апреля 2020

Я не знаком с R, мне нужна ваша помощь в этом вопросе, у меня есть фрейм данных, состоящий из 25 переменных (25 столбцов) с именем df упрощенный

 name   experience      Club        age       Position 
 luc          2         FCB         18        Goalkeeper
 jean         9         Real        26        midfielder
 ronaldo      14        FCB         32        Goalkeeper
 jean         9         Real        26        midfielder
 messi        11        Liverpool   35        midfielder
 tevez        6         Chelsea     27        Attack
 inzaghi      9         Juve        34        Defender
 kwfni        17        Bayern      40        Attack
 Blabla       9         Real       25        midfielder
 wdfood      11        Liverpool   33        midfielder
 player2      7         Chelsea     28       Attack
 player3     10         Juve       34        Defender
 fgh         17        Bayern      40        Attack

Я хотел бы добавить столбец в этот фрейм данных с именем "страна". Этот новый столбец учитывает различные условия.

Juve      Italy
FCB       Spain
Real      Spain
Chelsea   England
Liverpool England
Bayern    Germany

Итак, допустим, если для клуба указан FCB или Real, значение в стране - Испания, вывод df $ Страна должен быть следующим:

Country
Spain 
Spain 
Spain 
Spain 
England
England 
Italy 
Germany
Spain 
England 
England
Italy 
Germany

Код, который я начал делать, следующий:

df$country=ifelse(df$Club=="FCB","spain",    df$Club=="Real","Spain" ......)

Но это кажется ложным. зная, что мой реальный набор данных имеет более 250 различных значений в столбце "клуб" и более 30 в "Страна"

выполнение этого вручную кажется слишком длинным.

Не могли бы вы помочь мне в этом укажите, пожалуйста.

1 Ответ

0 голосов
/ 02 апреля 2020

Знаете ли вы, как использовать if-else операторы внутри for циклов? Это был бы самый простой выход.

Примерно так:

df <- data.frame(name = c("a", "b", "c"),
                 Club = c("FCB", "Real", "Liverpool"),
                 stringsAsFactors = FALSE)


for(i in 1:nrow(df)){
  if(df$Club[i] == "FCB" | df$Club[i] == "Real"){
    df$country[i] <- "Spain"
  } else if(df$Club[i] == "Liverpool"){
    df$country[i] <- "England"
  } else{
    df$country[i] <- NA
  }
}

df
#   name      Club country
# 1    a       FCB   Spain
# 2    b      Real   Spain
# 3    c Liverpool England
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...