簡體   English   中英

按日期和值 R 排序

[英]Sort by dates and value R

我有這個數據框:

a <- c(1,2,3,4,5)
b <- c(100, 300, NA, 430, 270)
c <- c('2018-02-01', '2020-02-17', '2019-10-24', '2019-10-24', '2020-02-17')
df <- data.frame(a,b,c)
names(df) <- c('id', "value", "Date")

我想要的只是按降序對Datevalue進行排序。 但是我發現日期可以通過使用rev進行排序,但對於 NA 順序不正確:

df[rev(order(df$Date, df$value)),] ##

我想要的結果應該是這樣的:

  id value       Date
2  2   300 2020-02-17
5  5   270 2020-02-17
4  4   430 2019-10-24
3  3    NA 2019-10-24
1  1   100 2018-02-01

任何建議在此數據框中處理 NA 而不丟棄它。

您可以嘗試dplyr函數,因為默認情況下, arrange() dplyr NA值排序到最后:

df %>%
  arrange(desc(Date),desc(value))

給出:

  id value       Date
1  2   300 2020-02-17
2  5   270 2020-02-17
3  4   430 2019-10-24
4  3    NA 2019-10-24
5  1   100 2018-02-01

使用na.last = FALSE應該可以解決問題:

df[rev(order(df$Date, df$value, na.last = FALSE)),] 

如果你想使用 data.table 包,你可以這樣做:

library(data.table)
setorderv(df, cols = c("Date","value"), order = -1, na.last=TRUE)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM