所以我正在處理一個列上的資料框,應該說每晚的睡眠時間,但是使用 difftime() 函式給出了一些值,這些值顯示了一些負值的睡眠小時數和正值的清醒小時數其他。我想從那些大于 0(非負數)的人中減去 24,所以我做了:
data$Sleep.time <- with(data = data, difftime(Bed.time, Waking.up.time, units = "hours"))
data$Sleep.time <- as.numeric(data$Sleep.time)
資料$減去 <- (24)
data$Sleep.time <- if (data$Sleep.time>0) {data$Sleep.time - data$subtract}
所以這只是從所有值中減去 24,所以我已經為負的值是完全錯誤的。我不太確定如何使用 if 函式,因此它可以正常作業,任何幫助都會很棒!
uj5u.com熱心網友回復:
if未向量化,即它需要一個帶有 的邏輯運算式length 1。'Sleep.time' 列將包含多個元素。我們可以使用ifelse或創建一個索引并用它來減去和分配
i1 <- data$Sleep.time> 0
data$Sleep.time[i1] <- data$Sleep.time[i1] - data$subtract[i1]
uj5u.com熱心網友回復:
你可以嘗試使用 ifelse 這樣的東西
data$Sleep.time <- ifelse(data$Sleep.time > 0, data$Sleep.time - 24, data$Sleep.time)
語法: ifelse(condition, if true, else) 如果條件應用于向量,則回傳向量。希望它有所幫助,這是矢量化的,比回圈快得多。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/340133.html
標籤:r
