将列转换为分钟数:对比X1与X2列时遇NA问题求助
解决思路与代码实现
你之前用as.POSIXct(X2, format = "%H:%M:%S")返回NA,是因为X2是纯分钟数字符,和%H:%M:%S的时间字符串格式完全不匹配,自然无法转换。下面提供两种统一格式的方法,任选其一就能完成两列数据的对比:
方法一:把X1转为总分钟数,和X2统一格式
- 先解析X1的时间字符串,拆分出小时和分钟,计算总分钟数;同时把X2转为数值型:
# 解析X1为时间对象,拆分时分秒 x1_time <- strptime(X1, format = "%H:%M:%S") # 计算X1对应的总分钟数 X1_total_min <- x1_time$hour * 60 + x1_time$min # 把字符型的X2转为数值型分钟数 X2_total_min <- as.numeric(X2) # 直接对比,比如判断两列是否相等 X1_total_min == X2_total_min
方法二:把X2转为"%H:%M:%S"格式字符串,和X1统一格式
- 将X2转为数值后,计算对应的小时、分钟,再格式化为标准时间字符串:
# 把字符型X2转为数值 x2_num <- as.numeric(X2) # 计算小时(总分钟整除60)和剩余分钟(总分钟取余60) hours <- x2_num %/% 60 minutes <- x2_num %% 60 # 格式化为两位数字的时间字符串(秒固定为00) X2_time_str <- sprintf("%02d:%02d:00", hours, minutes) # 直接和X1对比 X1 == X2_time_str
内容的提问来源于stack exchange,提问作者Sony
相关产品推荐
相关产品推荐

