2017-07-14 5 views
0

私は四半期周波数と3つの時間変数を持つデータフレームを持っています。時間はです。私は時系列変数として時間を設定し、NAME1(アルファベット順)、名2(アルファベット順)、および時間(時系列)でデータフレームを並べ替えたい四半期の頻度を持つ文字から時間変数を変換する

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 <- 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'オブジェクトにあることです。あなたが「2012年Q2」形式に戻すために 'dt $ time = format(dt $ time、"%Y Q%q ")を実行した場合、それはあなたの後のものでしょうか? – Spacedman

答えて

0

$year$quarterではなく$timeを使用するのはなぜですか?

ちょうどdplyr::arrange(dt, name1, name2, year, quarter)です。

関連する問題