在R语言中转换字符为时分秒格式报错:strptime无法找到avg_pace列
问题解决方法
错误原因
strptime()函数的第一个参数需要传入单个字符向量,但你通过管道%>%把整个garmin数据框传给了它,此时strptime会把数据框当作第一个参数,而它的第二个参数是格式串,自然找不到名为avg_pace的参数,所以报错。
正确写法
用dplyr的mutate()函数处理数据框中的列,将strptime()应用到avg_pace列上。另外纠正格式字符串:你要解析的毫秒格式应该用"%M:%S.%f"(而非"%M:%S:.%f",多了多余的冒号),%f确实是用于匹配毫秒(支持6位精度,三位毫秒也能正常解析)。
示例代码
如果要新增一列存储转换后的时间:
garmin2 <- garmin %>% mutate(avg_pace_time = strptime(avg_pace, "%M:%S.%f"))
如果要直接替换原avg_pace列:
garmin2 <- garmin %>% mutate(avg_pace = strptime(avg_pace, "%M:%S.%f"))
内容的提问来源于stack exchange,提问作者Michael Collins
相关产品推荐
相关产品推荐

