我試圖在我的資料集中創建一列。我生成了一列從 2018 年到 2020 年的隨機日期,但時間戳似乎并沒有像我希望的那樣全天隨機生成。
我這樣做是為了創建日期/時間列
data$date <- sample(seq(as.POSIXct('2018/01/01'), as.POSIXct('2020/12/31'), by = "day"),
length(data$date), replace = TRUE)
并用它來拉動時代
data$time <- format(data$date, format = "%H:%M:%S")
但這就是它的樣子
> dput(data[1:10,-c(5,6)])
structure(list(order_num = c(501073L, 969942L, 1091101L, 590143L,
390404L, 219429L, 1025827L, 689629L, 694348L, 435848L), date = structure(c(1542344400,
1552194000, 1550379600, 1534568400, 1523336400, 1563426000, 1595826000,
1552712400, 1534309200, 1547960400), class = c("POSIXct", "POSIXt"
), tzone = ""), total_sale = c(36.3853391310075, 35.9405038506853,
55.6254974332793, 47.7214780063544, 61.4086594373677, 32.8631076291332,
33.3640439679803, 40.8944394660076, 54.9455495252506, 48.12597580998
), season = c("Spring", "Winter", "Winter", "Fall", "Fall", "Spring",
"Summer", "Summer", "Fall", "Fall"), time = c("00:00:00", "00:00:00",
"00:00:00", "01:00:00", "01:00:00", "01:00:00", "01:00:00", "01:00:00",
"01:00:00", "00:00:00")), row.names = c(NA, 10L), class = "data.frame")
我希望在一天中獲得更多隨機時間,例如 9:33:35、14:56:43 等。
uj5u.com熱心網友回復:
您可以使用 - 生成隨機時間
data$time <- format(as.POSIXct(sample(86400, nrow(data)), origin = '1970-01-01'), '%T')
這會生成從 1 到 86400(一天中的秒數)的亂數,將其更改為POSIXcttype 并使用format.
uj5u.com熱心網友回復:
我認為這個功能將幫助你生成你提到的全天隨機時間
randomtimes <- function(N, st="2018/01/01", et="2020/12/31") {
st <- as.POSIXct(as.Date(st))
et <- as.POSIXct(as.Date(et))
dt <- as.numeric(difftime(et,st,unit="sec"))
ev <- sort(runif(N, 0, dt))
rt <- st ev
}
然后您可以將其應用于您的資料。這里nrow只計算資料中的行數,然后使用該值生成日期數。您也可以只換出nrow(data)10,因為這是您資料中的行數
data$date <- randomtimes(nrow(data))
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/369900.html
上一篇:串列理解無法按預期作業
