mercredi 24 janvier 2018

New variable based on multiple ifelse conditions R

I have a dataframe, users_full, in which I would like to create a new variable, party_followers, that has the following categories: AFD, SPD, CDU, FDP, Linke, Multiple.

I would like to create the categories for the new variable by matching users_full$user_id to the user_id variable of the respective dataframe of followers, e.g., afd_followers, spd_followers, etc.

The problem is that users_full$user_id can be a follower of multiple parties, and I am not sure how to account for this using an ifelse statement.

I tried the following, but it's not working.

mutate(users_full, party_followers = ifelse(user_id == afd_followers$user_id & user_id != cdu_followers$user_id & user_id != spd_followers$user_id & user_id != linke_followers$user_id & user_id != fdp_followers$user_id, "AfD",
                                user_id == cdu_followers$user_id & user_id != afd_followers$user_id & user_id != spd_followers$user_id & user_id != linke_followers$user_id & user_id != fdp_followers$user_id, "CDU",
                                user_id == spd_followers$user_id & user_id != cdu_followers$user_id & user_id != afd_followers$user_id & user_id != linke_followers$user_id & user_id != fdp_followers$user_id, "SPD",
                                user_id == linke_followers$user_id & user_id != cdu_followers$user_id & user_id != afd_followers$user_id & user_id != spd_followers$user_id & user_id != fdp_followers$user_id, "Linke",
                                user_id == fdp_followers$user_id & user_id != cdu_followers$user_id & user_id != afd_followers$user_id & user_id != spd_followers$user_id & user_id != linke_followers$user_id, "FDP",
                                user_id == afd_followers$user_id & cdu_followers$user_id & spd_followers$user_id & linke_followers$user_id & fdp_followers$user_id, "Multiple", "Other"))

Below, I reconstructed samples of the dataframes I am using.

users_full <- data.frame(
user_id = c("3854371132", "883470465498587138", "145216962", "2223089418", 
"2861583057", "271413649"))

spd_followers <- data.frame(
user_id = c("145216962", "3864655101", "757305123165069312", "4854498122", 
"1201495387", "565422099"))


afd_followers <- data.frame(
user_id = c("3854371132", "883470465498587138", "845969869778685952", "3864655101", 
"757305123165069312", "793677341042044928"))

cdu_followers <- data.frame(
user_id = c("3854371132", "145216962", "3864655101", "757305123165069312", 
"3207639056", "4854498122"))

linke_followers <- data.frame(
user_id = c("47289872", "1044855103", "565082298", 
"956148596042330112", "2490464967", "956147739951329280"))

Aucun commentaire:

Enregistrer un commentaire