我有一個看起來類似于這樣的資料框:
set.seed(42)
start <- Sys.Date() sort(sample(1:10, 5))
set.seed(43)
end <- Sys.Date() sort(sample(1:10, 5))
end[4] <- NA
A <- c("10", "15", "NA", "4", "NA")
B <- rpois(n = 5, lambda = 10)
df <- data.frame(start, end, A, B)
我想,當 A 列中有一個 NA 來計算開始和結束的時間。當 start 或 end 為 NA 時,什么都不會發生。
我嘗試過這樣的事情:
df[, df$A [is.na(df[, df$A])]] <- difftime(df$end, df$start, units = "hours")
但這給了我錯誤:選擇了未定義的列。
有人有想法嗎?謝謝。
uj5u.com熱心網友回復:
在'A'列中創建一個索引,根據索引NA對'start','end'進行子集化,獲取difftime并分配回
df$A <- as.numeric(df$A)
i1 <- is.na(df$A)
df$A[i1] <- with(df, as.numeric(difftime(start[i1], end[i1], units = "hours")))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/473846.html
下一篇:C中數字的階乘
