Dear All,I have a dataframe with 4 variables and I am trying to calculate how many shares can be purchased with ?100 in the first year when the company was listed The data looks like: COMPANY_NUMBER YEAR_END_DATE CLOSE_SHARE_PRICE NUMBER_OF_SHARES 22705 30/09/2002 NA 0 22705 30/09/2004 NA 0 22705 30/09/2005 6.55 0 22705 30/09/2006 7.5 0 22705 30/09/2007 9.65 0 22705 30/09/2008 6.55 0 1091347 31/01/2010 8.14 0 1091347 31/01/2011 11.38 0 11356069 30/06/2019 1.09 0 SC192761 31/01/2000 NA 0 SC192761 31/01/2001 NA 0 SC192761 31/01/2002 NA 0 SC192761 31/01/2004 NA 0 SC192761 31/01/2005 NA 0 SC192761 31/01/2006 1.09 0 SC192761 31/01/2008 1.24 0 SC192761 31/01/2009 0.9 0 SC192761 31/01/2010 1.14 0 SC192761 31/01/2011 1.25 0 SC192761 31/01/2012 1.29 0 The code I have written is i <- 0 for (i in 1:(nrow(PLC_Return)-1)) if (i == 1) { NUMBER_OF_SHARES[i] = 100/is.na(CLOSE_SHARE_PRICE[i]) } else if (is.na(PLC_Return[i, 1]) == is.na(PLC_Return[i + 1, 1]) { NUMBER_OF_SHARES[i]=0 } else { NUMBER_OF_SHARES[i] = 100/is.na(CLOSE_SHARE_PRICE[i]) } The error I get is Error: unexpected 'else' in: " NUMBER_OF_SHARES[i] = 0 } else"> {NUMBER_OF_SHARES[i] = 100/is.na(CLOSE_SHARE_PRICE[i])} > > }Error: unexpected '}' in "}" Don't know how to fix it-any help will be appreciated. Kind regards Ahson [[alternative HTML version deleted]]
Your code was formatted incorrectly. There is always a problem with the 'else' statement after an 'if' since in R there is no semicolon to mark the end of a line. Here might be a better format for your code. I would recommend the liberal use of "{}"s when using 'if/else' i <- 0 for (i in 1:(nrow(PLC_Return) - 1)) { if (i == 1) { NUMBER_OF_SHARES[i] = 100 / is.na(CLOSE_SHARE_PRICE[i]) } else { if (is.na(PLC_Return[i, 1]) == is.na(PLC_Return[i + 1, 1]) { NUMBER_OF_SHARES[i] = 0 } else { NUMBER_OF_SHARES[i] = 100 / is.na(CLOSE_SHARE_PRICE[i]) } } } Jim Holtman *Data Munger Guru* *What is the problem that you are trying to solve?Tell me what you want to do, not how you want to do it.* On Tue, Apr 13, 2021 at 5:51 AM e-mail ma015k3113 via R-help < r-help at r-project.org> wrote:> Dear All,I have a dataframe with 4 variables and I am trying to calculate > how many shares can be purchased with ?100 in the first year when the > company was listed > > The data looks like: > > COMPANY_NUMBER YEAR_END_DATE CLOSE_SHARE_PRICE NUMBER_OF_SHARES > 22705 30/09/2002 > NA 0 > 22705 30/09/2004 > NA 0 > 22705 30/09/2005 > 6.55 0 > 22705 30/09/2006 > 7.5 0 > 22705 30/09/2007 > 9.65 0 > 22705 30/09/2008 > 6.55 0 > 1091347 31/01/2010 8.14 > 0 > 1091347 31/01/2011 11.38 > 0 > 11356069 30/06/2019 1.09 > 0 > SC192761 31/01/2000 NA > 0 > SC192761 31/01/2001 NA > 0 > SC192761 31/01/2002 NA > 0 > SC192761 31/01/2004 NA > 0 > SC192761 31/01/2005 NA > 0 > SC192761 31/01/2006 1.09 > 0 > SC192761 31/01/2008 1.24 > 0 > SC192761 31/01/2009 0.9 > 0 > SC192761 31/01/2010 1.14 > 0 > SC192761 31/01/2011 1.25 > 0 > SC192761 31/01/2012 1.29 > 0 > > > The code I have written is > > i <- 0 > > for (i in 1:(nrow(PLC_Return)-1)) > if (i == 1) > { > NUMBER_OF_SHARES[i] = 100/is.na(CLOSE_SHARE_PRICE[i]) > } else if > (is.na(PLC_Return[i, 1]) == is.na(PLC_Return[i + 1, 1]) > { > NUMBER_OF_SHARES[i]=0 > } else > { > NUMBER_OF_SHARES[i] = 100/is.na(CLOSE_SHARE_PRICE[i]) > } > > > The error I get is Error: unexpected 'else' in: > > " NUMBER_OF_SHARES[i] = 0 > } else" > > {NUMBER_OF_SHARES[i] = 100/is.na(CLOSE_SHARE_PRICE[i])} > > > > } > Error: unexpected '}' in "}" > > > Don't know how to fix it-any help will be appreciated. > > > Kind regards > > > Ahson > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. >[[alternative HTML version deleted]]
Hello, A close parenthesis is missing in the nd if. for (i in 1:(nrow(PLC_Return)-1)){ if (i == 1){ NUMBER_OF_SHARES[i] = 100/is.na(CLOSE_SHARE_PRICE[i]) } else if(is.na(PLC_Return[i, 1]) == is.na(PLC_Return[i + 1, 1])){ NUMBER_OF_SHARES[i]=0 } else { NUMBER_OF_SHARES[i] = 100/is.na(CLOSE_SHARE_PRICE[i]) } } Hope this helps, Rui Barradas ?s 13:51 de 13/04/21, e-mail ma015k3113 via R-help escreveu:> Dear All,I have a dataframe with 4 variables and I am trying to calculate how many shares can be purchased with ?100 in the first year when the company was listed > > The data looks like: > > COMPANY_NUMBER YEAR_END_DATE CLOSE_SHARE_PRICE NUMBER_OF_SHARES > 22705 30/09/2002 NA 0 > 22705 30/09/2004 NA 0 > 22705 30/09/2005 6.55 0 > 22705 30/09/2006 7.5 0 > 22705 30/09/2007 9.65 0 > 22705 30/09/2008 6.55 0 > 1091347 31/01/2010 8.14 0 > 1091347 31/01/2011 11.38 0 > 11356069 30/06/2019 1.09 0 > SC192761 31/01/2000 NA 0 > SC192761 31/01/2001 NA 0 > SC192761 31/01/2002 NA 0 > SC192761 31/01/2004 NA 0 > SC192761 31/01/2005 NA 0 > SC192761 31/01/2006 1.09 0 > SC192761 31/01/2008 1.24 0 > SC192761 31/01/2009 0.9 0 > SC192761 31/01/2010 1.14 0 > SC192761 31/01/2011 1.25 0 > SC192761 31/01/2012 1.29 0 > > > The code I have written is > > i <- 0 > > for (i in 1:(nrow(PLC_Return)-1)) > if (i == 1) > { > NUMBER_OF_SHARES[i] = 100/is.na(CLOSE_SHARE_PRICE[i]) > } else if > (is.na(PLC_Return[i, 1]) == is.na(PLC_Return[i + 1, 1]) > { > NUMBER_OF_SHARES[i]=0 > } else > { > NUMBER_OF_SHARES[i] = 100/is.na(CLOSE_SHARE_PRICE[i]) > } > > > The error I get is Error: unexpected 'else' in: > > " NUMBER_OF_SHARES[i] = 0 > } else" >> {NUMBER_OF_SHARES[i] = 100/is.na(CLOSE_SHARE_PRICE[i])} >> >> } > Error: unexpected '}' in "}" > > > Don't know how to fix it-any help will be appreciated. > > > Kind regards > > > Ahson > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. >