2
まず、再現可能な例を示します。私はフォーマットのようなユリウス暦での日が含まれているDOM列から日付を抽出する必要がr - data.tableでユリウス日付をカレンダー日付に変換する
> require(data.table)
> x <- structure(list(DoM = c(2011241L, 2015359L, 2016352L, 2015360L,
2015287L, 2014038L, 2017066L, 2012227L, 2015041L, 2015295L),
Year = c(2011L, 2015L, 2016L, 2015L, 2015L, 2014L, 2017L,
2012L, 2015L, 2015L), Month = c(8L, 12L, 12L, 12L, 10L, 2L,
3L, 8L, 2L, 10L)), .Names = c("DoM", "Year", "Month"), row.names = c(NA,
-10L), class = c("data.table", "data.frame"))
> x
DoM Year Month
1: 2011241 2011 8
2: 2015359 2015 12
3: 2016352 2016 12
4: 2015360 2015 12
5: 2015287 2015 10
6: 2014038 2014 2
7: 2017066 2017 3
8: 2012227 2012 8
9: 2015041 2015 2
10: 2015295 2015 10
- 私は約20万行を取り扱っておりますので、私はdata.tableを使用しています。 DoM列の各要素の形式はyyyyddd
です。ddd
は、年の日であるyyyy
です(したがって、1 <= ddd <= 366
)。
例:それは私が現在私が持っているものに満足していないです2011
の241 ST日、に対応するため、最初の日付は2011-08-29
だろう -
x[, Date:=as.Date((DoM-1000*Year)-1, origin=paste(Year,1,1,sep='-'))]
私は疑いますpaste
は非効率的で、より良い可能性のある代替案を探していました。
ありがとうございました!
かで動作するように速いかもしれ整数、日付、 'as.IDate(same_code複数)'のために。 – Frank
私は 'as.IDate'を使って16倍のパフォーマンスを向上させました!ありがとう – Ameya