#Create friendly names in events table replacing spaces with underscores event$names_filled <- tolower(gsub(" ", "_", event$event)) #Initialize a data frame with all 0 values #Dimensions are number of observations as rows, with a column for every possible event event_df <- data.frame(matrix(data = 0, ncol = nrow(event), nrow = nrow(servercall_data))) names(event_df) <- event$id #Parse comma-delimited string into vector #Each vector value represents column name in event_df, assign value of 1 for(row in servercall_data$post_event_list){ if(!is.na(row)){ for(event_ in strsplit(row, ",")){ event_df[as.character(event_)] <- 1 } } } #Rename columns with "friendly" names names(event_df) <- event$names_filled #Horizontally join datasets to create final dataset oneday_df <- cbind(denormalized_df, event_df)