Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 按日期和变量对数据框排序_R_Dataframe_Dplyr - Fatal编程技术网

R 按日期和变量对数据框排序

R 按日期和变量对数据框排序,r,dataframe,dplyr,R,Dataframe,Dplyr,我需要根据同一列中的日期和变量组对下面的数据框进行排序 DF 我想在下面提到的格式与最新的日期降序DF DF2 我试过下面提到的方法 DF$new<-ifelse(Output$Date=='AER_ST',1, ifelse(Output$Date=='BER_TT',2,0)) DF2<-arrange(DF, desc(Date), desc(new)) 一个选项是将日期列转换为实际日期,这样文本将转换为NA,并且只保留实际日期。现在

我需要根据同一列中的日期和变量组对下面的数据框进行排序

DF

我想在下面提到的格式与最新的日期降序DF

DF2

我试过下面提到的方法

DF$new<-ifelse(Output$Date=='AER_ST',1,
                    ifelse(Output$Date=='BER_TT',2,0))

DF2<-arrange(DF, desc(Date), desc(new))
一个选项是将日期列转换为实际日期,这样文本将转换为NA,并且只保留实际日期。现在,我们可以用以前的日期值填充这些NAs,并按降序排列这些日期

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

通过Base R可以根据日期、顺序、重新排列列表和rbind进行拆分,即


谢谢:如果某个日期缺少BER_TT行,是否可以在最终数据帧中用0值显示该行。??
DF$new<-ifelse(Output$Date=='AER_ST',1,
                    ifelse(Output$Date=='BER_TT',2,0))

DF2<-arrange(DF, desc(Date), desc(new))
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
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