R中的短格式到长格式

时间:2019-01-30 18:13:59

标签: r data.table reshape2

这是我在excel上的数据,状态和事件是上述日期的变量。事件列没有数据。

30/12/2018     31/12/2018           01/01/2019  
Status  event      status   event   status  event

delivered      ncp              ncp 

ncp        delivered            ncp     

我想将这些变量作为标题,并将这些日期作为一栏添加。

注意:这只是我的数据的一个示例,实际上,日期可以使用一个月。请帮忙。

2 个答案:

答案 0 :(得分:0)

将Excel文件另存为CSV。然后使用R read.csv()函数

sample_data <- read.csv(file="c:/mySampleData.csv", header=TRUE, sep=",")

该函数的第一个参数是文件的路径。
它将数据转换为数据框,您可以使用$访问列,例如sample_data$Status将返回状态列。

答案 1 :(得分:0)

不确定这是否是您要寻找的东西,但这应该将数据转换为结构良好的格式。

library(readxl)
library(dplyr)
library(tidyr)

file <- # INSERT FILE PATH HERE

df <- read_excel(file, col_names = FALSE)

df2 <- df %>%
       mutate(SEQ_NO = ifelse(row_number() > 2, row_number() - 2, NA)) %>%
       gather(COL, VAL, -SEQ_NO) %>%
       mutate(DATE = ifelse(grepl('/', VAL), VAL, NA),
              DATE = as.Date(DATE, format = '%d/%m/%Y')) %>%
       fill(DATE) %>%
       mutate(KEY = ifelse(VAL %in% c('status', 'event'), toupper(VAL), NA)) %>%
       fill(KEY) %>%
       filter(!is.na(SEQ_NO)) %>%
       select(-COL) %>%
       spread(KEY, VAL) %>%
       arrange(DATE, SEQ_NO) %>%
       select(DATE, SEQ_NO, STATUS, EVENT)