2017-07-14 55 views
0

我有一個季度頻率和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")) 

我想時間設置爲我的時間序列變量,排序名1(按字母順序),NAME2(按字母順序)和時間(按時間順序)的數據幀。期望的輸出應該是

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),] 

在此先感謝。

+0

你嘗試過的東西是不是工作?我看到的唯一可能的區別是你的宿舍現在處於'yearqtr'對象而不是字符串。如果你做'dt $ time = format(dt $ time,「%Y Q%q」)'讓他們回到「2012 Q2」格式,那麼你會怎樣? – Spacedman

回答

0

爲什麼要用$time而不是$year$quarter

只要做dplyr::arrange(dt, name1, name2, year, quarter)