2017-06-01 137 views
1
library(DT) 
seq_dates <- data.frame(dates = as.Date("2017-01-01") + 1:6 * 100) 
datatable(seq_dates) %>% formatDate(1, "toDateString") 

我在查看器窗格中得到一個數據表,顯示日期格式爲「Mon May 22 2017」。Datatable輸出中的格式日期

Q - 如何格式化日期列作爲「MM-YY」

如果我這樣做,

dplyr::mutate(seq_dates, dates = format(dates, format = "%b-%Y")) %>% 
    datatable() 

我得到所需的日期格式,但在第二種情況下列排序不工作(排序是在字母而不是日期上完成的)。

PS - 我正在實施這個亮點。

回答

0

轉換"%b-%y"「日期」爲日期格式是不是因爲我可以看到一件容易的事情......

如果你不是太執着於顯示"%b-%y"格式,最簡單的方法是使用"%Y-%m""%y-%m"格式和過濾器將工作得很好:

library(DT) 

seq_dates <- as.data.frame(seq(Sys.Date() - 100, Sys.Date(), by = "m")) 
seq_dates <- format(seq_dates, format = "%y-%m") 

datatable(seq_dates) 

#resulting in 

#1  2017-02 
#2  2017-03 
#3  2017-04 
#4  2017-05 

#or 

#1  17-02 
#2  17-03 
#3  17-04 
#4  17-05 
2

喜在這種情況下我認爲最好的辦法是在原單格式中的日期添加一個虛擬列,並有日期列根據該值進行排序DUMMY列。這是在Datatable很容易完成。下面的示例代碼。

seq_dates <- data.frame(dates = as.Date("2017-01-01") + 1:6 * 100) 
datatable(seq_dates %>% mutate(DUMMY = dates,dates = format(dates, format = "%b-%Y")), 
      options = list(
      columnDefs = list(
       list(targets = 1,orderData = 2), 
       list(targets = 2, visible = FALSE) 
      ) 
      )) 
+0

不錯的解決方法。我希望用'formatDate()'的解決方案。如果幾天內沒有更直接的解決方案,我會驗證你的。 –

+0

由於我(OP)需要MM-YY格式,因此我將日期列轉換爲適當級別的因子 - 這就實現了! – Vasim

+0

@Vasim很酷,你找到了你自己的解決方案,但由於我的解決方案允許使用各種日期格式,所以我不認爲你有任何需要投票回答。 –