Мы можем преобразовать строки в объект времени и затем преобразовать его в секунды с помощью period_to_seconds
(из lubridate
).Получите индекс элементов, не являющихся NA, из 'Col2' ('i1'). На основе индекса создайте столбец 'Secs', умножив его на соответствующие элементы из 'Col1' и присвойте значения 0 в 'Col1' иявляется NA в Col2 до 0
library(lubridate)
secs <- period_to_seconds(hms(df1$Col2))
i1 <- !is.na(df1$Col2)
df1$Secs[i1] <- secs[i1] * df1$Col1[i1]
df1$Secs[df1$Col1==0 & !i1] <- 0
df1
# Col1 Col2 Secs
#1 0 <NA> 0
#2 3 00:40:00 7200
#3 2 00:40:00 4800
#4 5 00:20:00 6000
#5 NA <NA> NA
#6 0 <NA> 0
data
df1 <- structure(list(Col1 = c(0L, 3L, 2L, 5L, NA, 0L), Col2 = c(NA,
"00:40:00", "00:40:00", "00:20:00", NA, NA)), .Names = c("Col1",
"Col2"), class = "data.frame", row.names = c("1", "2", "3", "4",
"5", "6"))