【问题标题】:formatting multi-row data into single row in R在R中将多行数据格式化为单行
【发布时间】:2018-07-20 12:13:39
【问题描述】:
我是一个奇怪的 excel 或 csv 格式文件,我想将它作为数据框导入 R。问题是某些列有多行记录,例如,数据如下:有三列两行但工具列有多列,有没有办法可以格式化数据所以我会有仅使用多个工具(例如工具 1、工具 2 等)进行记录
Task Location Tools
Raising ticket Alabama sharepoint
word
oracle
Changing ticket Seattle word
oracle
预期的最终输出
Task Location Tools1 Tools2 Tools3
Raising ticket Alabama sharepoint word oracle
Changing ticket Seattle word oracle
【问题讨论】:
标签:
r
dplyr
data.table
reshape
tidyr
【解决方案1】:
使用dplyr 和tidyr。您可以fill您的数据框,以便任务和位置包含在每一行中。然后group_byTask 和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