Hello Everyone I hope you guys are having a great week.
I have a small dataset of 4 variables one is subject the second is key which is a code that a subject uses to log onto a system, third is order which will keep track of chronological year and finally the variable Period that indicates whether the key was used in a previous time past or the current month current.
This is the dataset:
subjects<-c(rep("James",3),
rep("Alex",2),
rep("Mila",8),
rep("Mark",1))
keys<-c(rep("IX08-8",2),"IX08-8",
"UX-007","HH-011",rep("PO_85",7),"UJ_8","785_PO")
order<-c(1:14)
period<-c("past","past","current","past","current",rep("past",6),"current","current","current")
df<-cbind(subjects,keys,period,order)
> head(df)
subjects keys period order
[1,] "James" "IX08-8" "past" "1"
[2,] "James" "IX08-8" "past" "2"
[3,] "James" "IX08-8" "current" "3"
[4,] "Alex" "UX-007" "past" "4"
[5,] "Alex" "HH-011" "current" "5"
[6,] "Mila" "PO_85" "past" "6"
ultimately I have to be able to tell if a subject is using a previously used key to log onto the system in the current Period, if a subject uses a new key to log onto the system in the current period then I will assign the value "1" to a column named result, if the user did not use a previously used key to log onto the system during the current period the value assigned should be "0" and "NA" otherwise.
My desired output would look like this:
subjects keys period order result
[1,] "James" "IX08-8" "past" "1" NA
[2,] "James" "IX08-8" "past" "2" NA
[3,] "James" "IX08-8" "current" "3" "0"
[4,] "Alex" "UX-007" "past" "4" NA
[5,] "Alex" "HH-011" "current" "5" "1"
[6,] "Mila" "PO_85" "past" "6" NA
[7,] "Mila" "PO_85" "past" "7" NA
[8,] "Mila" "PO_85" "past" "8" NA
[9,] "Mila" "PO_85" "past" "9" NA
[10,] "Mila" "PO_85" "past" "10" NA
[11,] "Mila" "PO_85" "past" "11" NA
[12,] "Mila" "PO_85" "current" "12" "0"
[13,] "Mila" "UJ_8" "current" "13" "1"
[14,] "Mark" "785_PO" "current" "14" "1"
For instance, in row # 3 James has assigned value 0 in result because he has used a previously used key to log on to the system in the current month which was key "IX08-8", but Mark has a value of 1 in the result column because the system has only tracked one key and that happens to be the key that he used to log on this current period which is technically a "new key".
What have I done to solve this?
I can group the dataset by subject and make sure this is arrange by order in a descending manner, but I can only think about creating a vector of keys (vector.of.previous.keys) per subject based on (period="past") and then evaluate if the current key is %in% vector.of.previous.keys, but if there is a way to only check whithin groups this criteria it would be a lot more efficient. Thank you so much guys for your help.