【问题标题】:Complex Restructure in R: strings, numeric and datesR中的复杂重组:字符串、数字和日期
【发布时间】:2018-08-28 15:18:34
【问题描述】:

我有一个广泛的数据集,其中每一行(一个人)为三个不同的日期提供最多三个观察结果。每个观察都包含日期、描述和分钟数。个人可以根据需要提供尽可能多的观察结果,并且可能出现在多行中并带有额外的观察结果。

测试数据在这里:

library(RCurl)
fwt <-     getURL("https://raw.githubusercontent.com/bac3917/Cauldron/master/fwt.csv")
fwt<-read.csv(text=fwt)

以正确的格式转换列:

library(lubridate)
fwt$date1<-as.Date(fwt$date1, format='%m/%d/%Y')
fwt$date2<-as.Date(fwt$date2, format='%m/%d/%Y')
fwt$date3<-as.Date(fwt$date3, format='%m/%d/%Y')
# condense dataset; 3 sets of columns into 1
cols <- names(fwt) %in%     c("naecy1_2","naecy1_1","naecy1_3","naecy1_4","naecy1_5","naecy1_6",
          "naecy2_2","naecy2_1","naecy2_3","naecy2_4","naecy2_5","naecy2_6",
          "naecy3_2","naecy3_1","naecy3_3","naecy3_4","naecy3_5","naecy3_6")


fwt[cols]<-lapply(fwt[cols], as.numeric) #convert to numeric all
fwt[is.na(cols)]<-0

基本上需要将三组日期/描述/分钟堆叠成长格式。我希望数据在重组后看起来像这样:

Name   Date  NAECY1  NAECY2  NAECY3  NAECY4  NAECY5  NAECY6

我尝试过reshape2tidyr,但无法弄清楚这一点。有什么想法吗?

谢谢...

【问题讨论】:

    标签: r tidyr reshape2


    【解决方案1】:

    这里有一个快速的解决方案:

    cols <- c("name", "date%d","descr%d", "naecy%d_1", "naecy%d_2", "naecy%d_3", "naecy%d_4", "naecy%d_5", "naecy%d_6")
    cols_renamed <- c("Name   Date Descr  NAECY1  NAECY2  NAECY3  NAECY4  NAECY5  NAECY6") %>% strsplit("\\W+") %>% unlist
    
    new_fwt <- lapply(1:3, function(i) {
      df <- fwt[,sprintf(cols, i)]
      colnames(df) <- cols_renamed
      df
    }) %>% do.call(rbind, .)
    

    【讨论】:

      猜你喜欢
      • 2021-08-08
      • 1970-01-01
      • 2012-02-17
      • 1970-01-01
      • 2016-10-07
      • 1970-01-01
      • 2017-09-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多