Faster ways to calculate frequencies and cast from long to wide
You could just use the table command: table(data$id,data$week) 1 2 3 1 2 1 1 2 0 0 1 If “id” and “week” are the only columns in your data frame, you can simply use: table(data) # week # id 1 2 3 # 1 2 1 1 # 2 0 0 1