web-dev-qa-db-ja.com

日付でデータフレームを並べ替える方法

Rの日付でデータフレームを並べ替える必要があります。日付はすべて「dd/mm/yyyy」の形式です。日付は3列目にあります。列ヘッダーはV3です。列ごとにデータフレームを並べ替える方法と、文字列を日付値に変換する方法を見てきました。日付でデータフレームを並べ替えるために2つを組み合わせることはできません。

45
John

データフレームの名前がdであると仮定すると、

d[order(as.Date(d$V3, format="%d/%m/%Y")),]

それが意味をなさない場合は、私のブログ投稿、 列の内容によるデータフレームの並べ替え を読んでください。

113
I82Much

今日では、lubridateおよびdplyrライブラリを使用するのが最も効率的で快適です。

lubridateには、日付をPOSIXctまたはDateオブジェクトに簡単に解析するための多数の関数が含まれています。ここでは、Day, Month, Year形式の日付を自動的に解析するdmyを使用します。データが日付形式になったら、必要に応じてdplyr::arrange(またはその他の順序付け関数)で並べ替えることができます。

d$V3 <- lubridate::dmy(d$V3)
dplyr::arrange(d, V3)
22
Love-R

降順で日付を並べ替える場合、マイナス記号は日付では機能しません。

out <- DF[rev(order(as.Date(DF$end))),]

ただし、汎用関数rev()でも同じ効果が得られます。したがって、次のように回転と順序を混ぜます。

#init data
DF <- data.frame(ID=c('ID3', 'ID2','ID1'), end=c('4/1/09 12:00', '6/1/10 14:20', '1/1/11 11:10')
#change order
out <- DF[rev(order(as.Date(DF$end))),]

それが役に立てば幸いです。

15

ソースで米国形式(mm-dd-yyyy HH-MM-SS PM/AM)を使用して、時間を処理する唯一の方法...

df_dataSet$time <- as.POSIXct( df_dataSet$time , format = "%m/%d/%Y %I:%M:%S %p" , tz = "GMT")
class(df_dataSet$time)
df_dataSet <- df_dataSet[do.call(order, df_dataSet), ] 
2

日付をrで最も古いものから最新のものに並べ替えるだけの場合は、いつでも実行できます。

dataframe <- dataframe[nrow(dataframe):1,]

Yahoo Financeのデータをソートするために、Excelにエクスポートしたり、Excelからエクスポートしたりする必要がありません。

2
Cameron Tujen

Order()を使用して、日付データをソートできます。

# Sort date ascending order
d[order(as.Date(d$V3, format = "%d/%m/%Y")),]

# Sort date descending order
d[rev(order(as.Date(d$V3, format = "%d/%m/%y"))),]

お役に立てれば、

私のquora回答へのリンク https://qr.ae/TWngCe

ありがとう

1
Nitz