People who can "do coding"
Posted: Thu Jan 14, 2021 12:12 pm
We had someone here doing a project that used R quite heavily for churning data. Here's an example of some code they wrote:
Voucherdata_week32$visit_nr2 <- ifelse(Voucherdata_week32$visit_nr==1.5,1,Voucherdata_week32$visit_nr)
Voucherdata_week32$visit_nr2 <- ifelse(Voucherdata_week32$visit_nr2==2.5,2,Voucherdata_week32$visit_nr2)
Voucherdata_week32$visit_nr2 <- ifelse(Voucherdata_week32$visit_nr2==3.5,3,Voucherdata_week32$visit_nr2)
Voucherdata_week32$visit_nr2 <- ifelse(Voucherdata_week32$visit_nr2==4.5,4,Voucherdata_week32$visit_nr2)
Voucherdata_week32$visit_nr2 <- ifelse(Voucherdata_week32$visit_nr2==5.5,5,Voucherdata_week32$visit_nr2)
Voucherdata_week32$visit_nr2 <- ifelse(Voucherdata_week32$visit_nr2==6.5,6,Voucherdata_week32$visit_nr2)
Voucherdata_week32$visit_nr2 <- ifelse(Voucherdata_week32$visit_nr2==7.5,7,Voucherdata_week32$visit_nr2)
Voucherdata_week32$visit_nr2 <- ifelse(Voucherdata_week32$visit_nr2==8.5,8,Voucherdata_week32$visit_nr2)
Voucherdata_week32$visit_nr2 <- ifelse(Voucherdata_week32$visit_nr2==9.5,9,Voucherdata_week32$visit_nr2)
Voucherdata_week32$visit_nr2 <- ifelse(Voucherdata_week32$visit_nr2==10.5,10,Voucherdata_week32$visit_nr2)
Voucherdata_week32$visit_nr2 <- ifelse(Voucherdata_week32$visit_nr2==11.5,11,Voucherdata_week32$visit_nr2)
Voucherdata_week32$visit_nr2 <- ifelse(Voucherdata_week32$visit_nr2==12.5,12,Voucherdata_week32$visit_nr2)
And there are instructions to add more lines if we ever encounter 13.5, or 14.5, etc.
Jesus Fcuking Wept.
I'm no programmer but even I can see that:
Rounding down a number does not require a separate line of code for every possible case
Hard coding the current week number as a variable name, so you have to change it every week is a bad idea
And the visit number should only ever be an integer in the first place, so bouncing it back to the person providing the data in the first place would actually fix the problem properly
Voucherdata_week32$visit_nr2 <- ifelse(Voucherdata_week32$visit_nr==1.5,1,Voucherdata_week32$visit_nr)
Voucherdata_week32$visit_nr2 <- ifelse(Voucherdata_week32$visit_nr2==2.5,2,Voucherdata_week32$visit_nr2)
Voucherdata_week32$visit_nr2 <- ifelse(Voucherdata_week32$visit_nr2==3.5,3,Voucherdata_week32$visit_nr2)
Voucherdata_week32$visit_nr2 <- ifelse(Voucherdata_week32$visit_nr2==4.5,4,Voucherdata_week32$visit_nr2)
Voucherdata_week32$visit_nr2 <- ifelse(Voucherdata_week32$visit_nr2==5.5,5,Voucherdata_week32$visit_nr2)
Voucherdata_week32$visit_nr2 <- ifelse(Voucherdata_week32$visit_nr2==6.5,6,Voucherdata_week32$visit_nr2)
Voucherdata_week32$visit_nr2 <- ifelse(Voucherdata_week32$visit_nr2==7.5,7,Voucherdata_week32$visit_nr2)
Voucherdata_week32$visit_nr2 <- ifelse(Voucherdata_week32$visit_nr2==8.5,8,Voucherdata_week32$visit_nr2)
Voucherdata_week32$visit_nr2 <- ifelse(Voucherdata_week32$visit_nr2==9.5,9,Voucherdata_week32$visit_nr2)
Voucherdata_week32$visit_nr2 <- ifelse(Voucherdata_week32$visit_nr2==10.5,10,Voucherdata_week32$visit_nr2)
Voucherdata_week32$visit_nr2 <- ifelse(Voucherdata_week32$visit_nr2==11.5,11,Voucherdata_week32$visit_nr2)
Voucherdata_week32$visit_nr2 <- ifelse(Voucherdata_week32$visit_nr2==12.5,12,Voucherdata_week32$visit_nr2)
And there are instructions to add more lines if we ever encounter 13.5, or 14.5, etc.
Jesus Fcuking Wept.
I'm no programmer but even I can see that:
Rounding down a number does not require a separate line of code for every possible case
Hard coding the current week number as a variable name, so you have to change it every week is a bad idea
And the visit number should only ever be an integer in the first place, so bouncing it back to the person providing the data in the first place would actually fix the problem properly