R语言:提取行间分钟数求和,创建耗时列及Zeit列处理问题
处理R数据集的时间列并生成耗时统计
步骤1:加载并预处理数据
首先加载数据集,同时注意SRB.konz列使用逗号作为小数分隔符,需要转换为数值型:
# 加载数据集 df <- structure(list(Zeit = c("11:35:00 AM", "12:43:00 PM", "12:48:00 PM", "12:53:00 PM", "12:58:00 PM", "1:03:00 PM", "1:08:00 PM", "1:13:00 PM", "1:18:00 PM", "1:23:00 PM", "1:28:00 PM", "1:33:00 PM", "1:38:00 PM", "1:43:00 PM", "1:48:00 PM"), SRB.konz = c("0", "0", "0", "0", "0", "0", "0", "0,0546352106", "1,89348740676", "14,16501124644", "33,21026613524", "45,19095110716", "51,16722074468", "46,13852290212", "38,99889779356")), row.names = c(NA, 15L), class = "data.frame") # 转换SRB.konz为数值型(替换逗号为点) df$SRB.konz <- as.numeric(gsub(",", ".", df$SRB.konz))
步骤2:转换时间列为可计算的时间格式
原Zeit列是字符型,需要转换为R可识别的时间类型,提供两种方法:
方法一:使用Base R
# 转换Zeit为时间类型(12小时制格式:%I表示12小时制小时,%p表示AM/PM) df$Zeit <- strptime(df$Zeit, format = "%I:%M:%S %p")
方法二:使用lubridate包(更简洁)
先安装并加载lubridate包:
install.packages("lubridate") library(lubridate) # 解析时间列 df$Zeit <- parse_time(df$Zeit, format = "%I:%M:%S %p")
步骤3:生成耗时相关列
生成累计耗时列(相对于第一行的分钟数)
# 计算每行时间与第一行时间的差值,转换为分钟 df$elapsed_min <- as.numeric(difftime(df$Zeit, df$Zeit[1], units = "mins"))
生成行间隔分钟数列(相邻两行的时间差)
# 计算相邻行的时间差,第一行无间隔设为NA df$interval_min <- c(NA, as.numeric(diff(df$Zeit, units = "mins")))
步骤4:求和所有行间隔的分钟数
total_interval <- sum(df$interval_min, na.rm = TRUE) # 输出结果 cat("所有行间隔的总分钟数:", total_interval, "\n")
处理后的数据集会包含新增的elapsed_min(累计耗时)和interval_min(行间隔)两列,同时完成了时间列的格式转换和数值列的预处理。
内容的提问来源于stack exchange,提问作者Daniel AG
相关产品推荐
相关产品推荐

