Hi Your code is hardly readable as you used HTML formating (not recommended) so I used another (split) approach.
Third column seems to be simple #make list lll <- split(as.factor(COMPANY_NUMBER), COMPANY_NUMBER) #calculate sequences as.numeric(unlist(lapply(lll, function(x) 1:length(x)))) should give you third column The second column seems to be calculated this way. lapply(lll, function(x) c(rep(1, length(x)-1), max(length(x)))) I believe others could come with simpler solutions. BTW why result for 10057418 Should be different? Cheers Petr > -----Original Message----- > From: R-help <r-help-boun...@r-project.org> On Behalf Of e-mail > ma015k3113 via R-help > Sent: Thursday, April 29, 2021 5:41 PM > To: r-help@r-project.org > Subject: [R] Help understanding loop behaviour > > I am trying to understand how loops in operate. I have a simple dataframe xx > which is as follows > > COMPANY_NUMBER NUMBER_OF_YEARS > > #0070837 3 > #0070837 3 > #0070837 3 > 1000403 4 > 1000403 4 > 1000403 4 > 1000403 4 > 10029943 3 > 10029943 3 > 10029943 3 > 10037980 4 > 10037980 4 > 10037980 4 > 10037980 4 > 10057418 3 > 10057418 3 > > 10057418 3 > 1009550 4 > 1009550 4 > 1009550 4 > 1009550 4 > The code I have written is > > while (i <= nrow(xx1) ) > > { > > for (j in 1:xx1$NUMBER_OF_YEARS[i]) > { > xx1$I[i] <- i > xx1$J[j] <- j > xx1$NUMBER_OF_YEARS_j[j] <- xx1$NUMBER_OF_YEARS[j] } i=i + > (xx1$NUMBER_OF_YEARS[i] ) } After running the code I want my dataframe > to look like > > |COMPANY_NUMBER |NUMBER_OF_YEARS| | I| |J| > > |#0070837 |3| |1| |1| > |#0070837 |3| |1| |2| > |#0070837 |3| |3| |3| > |1000403 |4| |1| |1| > |1000403 |4| |1| |2| > |1000403 |4| |1| |3| > |1000403 |4| |4| |4| > |10029943 |3| |1| |1| > |10029943 |3| |1| |2| > |10029943 |3| |3| |3| > |10037980 |4| |1| |1| > |10037980 |4| |1| |2| > |10037980 |4| |1| |3| > |10037980 |4| |4| |4| > |10057418 |3| |1| |1| > |10057418 |3| |1| |1| > |10057418 |3| |1| |1| > |1009550 |4| |1| |1| > |1009550 |4| |1| |2| > |1009550 |4| |1| |3| > |1009550 |4| |4| |4| > > > I get the correct value of I but in the wrong row but the vaule of J is correct in > the first iteration and then it goes to 1 > > Any help will be greatly appreciated > [[alternative HTML version deleted]] > > ______________________________________________ > R-help@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.
______________________________________________ R-help@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.