如何弄清楚新NaN的来源--R

时间:2018-05-22 19:44:50

标签: r datetime timer nan

Total_Time <- function(TT_column){
z <- dmy_hms(TT_column)
hr <- hour(z)
min <- minute(z)
sec <- second(z)
x <- hr*60 + min + sec/60 # No need to extract days as the maximum value is 13 hours
x
}

df$TT.Col_1 <- Total_Time(df$T.Col_1)
sum(is.na(df)) # 0
df$TT.Col_2 <- Total_Time(df$T.Col_2)
sum(is.na(df)) # 0
df$TT.Col_3 <- Total_Time(df$T.Col_3)
sum(is.na(df)) # 0
df$TT.Col_4 <- Total_Time(df$T.Col_4)
sum(is.na(df)) # 0
df$TT.Col_5 <- Total_Time(df$T.Col_5)
sum(is.na(df)) # 5
df$TT.Col_6 <- Total_Time(df$T.Col_6)
sum(is.na(df)) # 7

我正在尝试找出tryCatch()的那些NaN值的来源,但我无法找到将tryCatch()用于这些特定列(TT.Col_5和{的方法{1}})。

某些上下文:TT.Col_6是字符时间值(T.Col_X),它们在dd/mm/yyyy hh:mm:ss开始时转换为分钟,为0小时0分0秒。 30/12/1899 00:00:00是转换这些值的函数,它会在Total_Time

中恢复它们

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。我发现它在NaN来自的代码行中应用没有函数的转换,例如:

而不是:

df$TT.Col_5 <- Total_Time(df$T.Col_5)

我做了:

z <- dmy_hms(df$T.Col_5) # Here was the problem
hr <- hour(z)
min <- minute(z)
sec <- second(z)
df$TT.Col_5 <- hr*60 + min + sec/60

问题是什么?我发现了5个空的非NaN值。 df$Col_6也是如此,而是7个非NaN值。