用
dplyr
和
tidyr
. 你可以
fill
使任务和位置包含在每一行中的数据帧。然后
group_by
任务和
mutate
为每个组中的每个任务添加一个ID列。然后使用
spread
将新创建的ID列分布在多个列中。
library(dplyr)
library(tidyr)
df <- data.frame(Task = c("Raising ticket","","","Changing ticket",""), Location = c("Alabama","","","Seattle",""), Tools = c("sharepoint","word","oracle","word","oracle"))
df[df==""] <- NA
df %>%
fill(Task,Location) %>%
group_by(Task) %>%
mutate(id = paste0("Tools",row_number())) %>%
spread(id, Tools)
# A tibble: 2 x 5
# Groups: Task [2]
# Task Location Tools1 Tools2 Tools3
# <fct> <fct> <fct> <fct> <fct>
# 1 Changing ticket Seattle word oracle <NA>
# 2 Raising ticket Alabama sharepoint word oracle