Good Afternoon,
I'm creating a function with several conditions and now, I want to mutate several variables based on them.
Originally, I used to do everything in SPSS, but I want to change. The code on spss that I've been using for all these years is this one"
#p2010
if (v2010=1) p2010=TOTALNV.
if (v2010=0) p2010=0.
if (v2010=2) p2010=TOTALNV-1.
if (v2010=3) p2010=TOTALNV-2.
if (v2010=4) p2010=TOTALNV-3.
if (v2010=5) p2010=TOTALNV-4.
if (v2010=6) p2010=TOTALNV-5.
compute p2009=p2010-v2009.
if (p2009=-1) p2009=TOTALNV.
if (p2009=-2) p2009=TOTALNV-1.
if (p2009=-3) p2009=TOTALNV-2.
if (p2009=-4) p2009=TOTALNV-3.
if (p2009=-5) p2009=TOTALNV-4.
if (p2009=-6) p2009=TOTALNV-5.
if (v2009=0) p2009=0.
compute p2008=p2009-v2008.
if (p2008=-1) p2008=TOTALNV-v2010.
if (p2008=-2) p2008=TOTALNV-v2010-1.
if (p2008=-3) p2008=TOTALNV-v2010-2.
if (p2008=-4) p2008=TOTALNV-v2010-3.
if (p2008=-5) p2008=TOTALNV-v2010-4.
if (p2008=-6) p2008=TOTALNV-v2010-5.
if (v2008=0) p2008=0.
compute p2007=p2008-v2007.
if (p2007=-1) p2007=TOTALNV-v2010-v2009.
if (p2007=-2) p2007=TOTALNV-v2010-v2009-1.
if (p2007=-3) p2007=TOTALNV-v2010-v2009-2.
if (p2007=-4) p2007=TOTALNV-v2010-v2009-3.
if (p2007=-5) p2007=TOTALNV-v2010-v2009-4.
if (p2007=-6) p2007=TOTALNV-v2010-v2009-5.
if (v2007=0) p2007=0.
These are my functions, sorry, it is pretty horrible.
varp2010 <- function(y, w){ #x = p2010, y = V2010, w = TotalNV
(ifelse(y == 1, w,
ifelse(y == 0, 0,
ifelse(y == 2, (w-1),
ifelse(y == 3, (w-2),
ifelse(y == 4, (w-3),
ifelse(y == 5, (w-4),
ifelse(y == 6, (w-5), 0))))))))
varp2009 <- function(y, w, z){
(ifelse(y == (-1), w,
ifelse(y == -2, (w-1),
ifelse(y == -3, (w-2),
ifelse(y == -4, (w-3),
ifelse(y == -5, (w-4),
ifelse(y == -6, (w-5),
ifelse(z == 0, 0, y))))))))
}
I created the variables called sum to be easy to work with sum2009 = TOTALNV-v2010-v2009 And this is my mutate function:
BH_final_All_Wn <- BH_final_All_Wn %>%
mutate(pr2010 = varp2010(y = V2010, w = TOTALNV),
pr2009 = pr2010 - V2009 %>%
varp2009(y = pr2009, w = TOTALNV, z = V2009),
pr2008 = pr2009 - V2008 %>%
varp2009(y = pr2008, w = sum2008, z = V2008),
pr2007 = pr2008 - V2007 %>%
varp2009(y = pr2007, w = sum2007, z = V2007),
pr2006 = pr2007 - V2006 %>%
varp2009(y = pr2006, w = sum2006, z = V2006),
pr2005 = pr2006 - V2005 %>%
varp2009(y = pr2005, w = sum2005, z = V2005),
pr2004 = pr2005 - V2004 %>%
varp2009(y = pr2004, w = sum2004, z = V2004),
pr2003 = pr2004 - V2003 %>%
varp2009(y = pr2003, w = sum2003, z = V2003),
pr2002 = pr2003 - V2002 %>%
varp2009(y = pr2002, w = sum2002, z = V2002),
pr2001 = pr2002 - V2001 %>%
varp2009(y = pr2001, w = sum2001, z = V2001),
pr2000 = pr2001 - V2000 %>%
varp2009(y = pr2000, w = sum2000, z = V2000),
pr1999 = pr2000 - V1999 %>%
varp2009(y = pr1999, w = sum1999, z = V1999),
pr1998 = pr1999 - V1998 %>%
varp2009(y = pr1998, w = sum1998, z = V1998),
pr1997 = pr1998 - V1997 %>%
varp2009(y = pr1997, w = sum1997, z = V1997),
pr1996 = pr1997 - V1996 %>%
varp2009(y = pr1996, w = sum1996, z = V1996))
My data's too big, around 300000 observations. I will be thankful if someone suggests the easiest way to do this.
Best
Aucun commentaire:
Enregistrer un commentaire