我需要根据日期对以下数据框进行排序,并且Variables包含在同一列中。
DF
Date Value
2019-01-01 445
AER_ST 220
BER_TT 225
2019-01-02 100
AER_ST 75
BER_TT 25
我想要下面提到的格式的DF
,且其日期降序排列。
DF2
Date Value
2019-01-02 100
AER_ST 75
BER_TT 25
2019-01-01 445
AER_ST 220
BER_TT 225
我尝试了下面提到的方法。
DF$new<-ifelse(Output$Date=='AER_ST',1,
ifelse(Output$Date=='BER_TT',2,0))
DF2<-arrange(DF, desc(Date), desc(new))
答案 0 :(得分:1)
一种选择是将Date
列转换为实际日期,以便将文本转换为NA
,而仅保留实际日期。现在我们可以将fill
的那些NA
与先前的Date
值和arrange
的这些日期按降序排列。
library(dplyr)
df %>%
mutate(Date1 = as.Date(Date)) %>%
tidyr::fill(Date1) %>%
arrange(desc(Date1)) %>%
select(-Date1)
# Date Value
#1 2019-01-02 100
#2 AER_ST 75
#3 BER_TT 25
#4 2019-01-01 445
#5 AER_ST 220
#6 BER_TT 225
答案 1 :(得分:0)
通过Base R的可能性可以是基于日期,顺序,重新排列列表和rbind
,即
l1 <- split(df, cumsum(!is.na(as.Date(df$Date, '%Y-%m-%d'))))
i1 <- order(as.Date(sapply(l1, function(i) i$Date[1]), '%Y-%m-%d'), decreasing = TRUE)
do.call(rbind, l1[i1])
给出,
Date Value 2.4 2019-01-02 100 2.5 AER_ST 75 2.6 BER_TT 25 1.1 2019-01-01 445 1.2 AER_ST 220 1.3 BER_TT 225