【问题标题】:Short format to long format in RR中的短格式到长格式
【发布时间】:2019-01-30 18:13:59
【问题描述】:

这就是我的数据在 Excel 上的样子,其中状态和事件是上述日期的变量。事件列没有数据。

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

delivered      ncp              ncp 

ncp        delivered            ncp     

我想将这些变量作为我的标题并将这些日期附加为一列。

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

【问题讨论】:

  • 您可以使用dput(head(df,10))添加示例数据吗?
  • 您的数据呈现不清晰。你能把它清理干净吗?

标签: r data.table reshape2


【解决方案1】:

将您的 Excel 文件另存为 CSV。然后使用Rread.csv()函数

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

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

【讨论】:

    【解决方案2】:

    不确定这是否是您要查找的内容,但这应该可以将数据转换为良好的结构化格式。

    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)
    

    【讨论】:

      猜你喜欢
      • 2021-12-24
      • 1970-01-01
      • 2016-06-07
      • 1970-01-01
      • 2012-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多