R 按季度频率从字符转换时间变量

R 按季度频率从字符转换时间变量,r,dataframe,data-manipulation,R,Dataframe,Data Manipulation,我有一个季度频率和3个时间变量的数据框架,时间是一个字符变量。数据框如下所示 dt <- structure(list( name1 = c("C","C","C","C","C","C","B","B","B","B","B","B"), name2 = c("D","E","A","D","E","A","D","E","A","D","E","A"), year = c(2012, 2012, 201

我有一个季度频率和3个时间变量的数据框架,时间是一个字符变量。数据框如下所示

   dt <- structure(list(
  name1          =  c("C","C","C","C","C","C","B","B","B","B","B","B"),
  name2          =  c("D","E","A","D","E","A","D","E","A","D","E","A"),  
  year           =  c(2012, 2012, 2012, 2010, 2010, 2010, 2012, 2012, 2012, 2010, 2010, 2010 ),
  quarter        =  c(4,4,4,1,1,1,4,4,4,1,1,1),
  time           =  c("2012q4", "2012q4","2012q4","2010q1", "2010q1","2010q1","2012q4", "2012q4","2012q4","2010q1", "2010q1","2010q1")),
  .Names         =  c("name1","name2","year", "quarter", "time"),
  row.names      =  c("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"), class =("data.frame")) 

dt为什么使用
$time
而不是
$year
$quarter


只需执行dplyr::安排(dt,name1,name2,年份,季度)

您尝试过的东西是如何不起作用的?我看到的唯一可能的区别是,您的季度现在是
yearqtr
对象而不是字符串。如果您使用
dt$time=format(dt$time,“%Y Q%Q”)
将它们恢复到“2012年第二季度”格式,这就是您想要的吗?
   dt <- structure(list(
 name1          =  c("B","B","B","B","B","B", "C","C","C","C","C","C"),
 name2          =  c("A", "A", "D", "D", "E", "E","A", "A", "D", "D", "E", "E"),  
 year           =  c(2010,2012,2010,2012,2010,2012,2010,2012,2010,2012,2010,2012),
 quarter        =  c(1,4,1,4,1,4,1,4,1,4,1,4),
 time           =  c("2010q1","2012q4", "2010q1","2012q4","2010q1","2012q4","2010q1","2012q4","2010q1","2012q4","2010q1","2012q4")),
 .Names         =  c("name1","name2","year", "quarter", "time"),
 row.names      =  c("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"), class =("data.frame"))
 dt$time <- as.yearqtr(dt$time)
 dt <- dt[order(dt$name1, dt$name2, dt$time),]