J'essaye d'ajouter une colonne dans le bloc de données où le nouvel élément dans la nouvelle colonne a la valeur de «1» si les conditions sont remplies pour cette ligne particulière.

Pour vérifier la condition, je parcours une autre trame de données de référence.

county_list = (df$county_name[df$wolves_present_in_county==1 & df$year==2015])

for (i in df$county_name) {
  for (j in county_list) {
    if (df$county_name[i]==county_list[j])
    {
      df$wolvein2015 = 1
      break
    }
  }
}

Erreur de sortie Base de données

0
curiousneel 25 oct. 2020 à 21:17

2 réponses

Meilleure réponse

Je pense que vous pouvez faire ce que vous voulez dans la base R. Voici un exemple utilisant mtcars:

cars <- mtcars
cars$new <- ifelse(cars$cyl == 4 & cars$mpg > 30, 1, 0)

La nouvelle colonne est ajoutée avec 0/1 en fonction des conditions de 2 autres variables.

BTW, parce que R est un paradigme vectorisé, vous ne devriez utiliser les boucles for qu'en dernier recours.

0
SteveM 25 oct. 2020 à 19:50

Voici une option avec dplyr

library(dplyr)
df %>%
     mutate(wolvein2015 = +((year == 2015 & !is.na(year)) &  
         as.logical(wolves_present_in_county) & !is.na(wolves_present_in_county)))
0
akrun 25 oct. 2020 à 18:53