私はしばしば時間を使って昼と夜の時間に分類しcut()
ます。cut()
クロック タイムが 0 付近になることを理解していないため、最初に時間を 3 つのグループ (昼と夜のいずれかの側) に分割し、次に 2 つの「夜」の因子レベルをマージします。これは、同じ「夜」の値を に 2 回指定することで実行できますlevels()
。例えば
x <- c(4, 10, 23) # i.e. 4 am, 10 am, 11 pm
x <- cut(x
, breaks = c(0, 6, 22, 23)
, include.lowest = FALSE
, labels = c("night2", "day", "night1"))
# [1] night2 day night1
# Levels: night2 day night1
levels(x) <- c("night", "day", "night")
x
# [1] night day night
# Levels: night day
今、私はff
オブジェクトの巨大なデータセットで同じことをしようとしています:
require(ff)
require(ffbase)
y <- ff(c(4, 10, 23))
y <- ff(cut(y
, breaks = c(0, 6, 22, 23)
, include.lowest = FALSE
, labels = c("night2", "day", "night1")))
y
# ff (open) integer length=3 (3) levels: night2 day night1
# [1] [2] [3]
# night2 day night1
levels(y) <- c("night", "day", "night")
y
# ff (open) integer length=3 (3) levels: night day night
# [1] [2] [3]
# night day night
この場合、levels()
は 3 つの因子レベルを保持しており、そのうちの 2 つは同じラベルを持つことに注意してください。recodeLevels
有望に見えましたが、まったく同じことはしません:
y <- recodeLevels(y, c("night", "day", "night"))
y
# ff (open) integer length=3 (3) levels: night day night
# [1] [2] [3]
# NA day NA
cut()
(実際には)内で重複した「夜」ラベルも試しましcut.ff()
たが、それでも3つのレベルが返され、因子の重複レベルは非推奨であるという警告が返されます。
アドバイスありがとうございます。