R中统计时间戳出现频率并新增列:时区丢失及连接报错求助
在R中统计时间戳出现频率并保留时区的解决方案
方法一:修复table生成的结果,保留时区
使用table统计后,将自动转为factor类型的时间戳重新转换为带时区的POSIXct格式,再进行连接:
# 生成频率统计表 n_occur <- as.data.frame(table(df$detection_timestamp_utc)) # 将factor类型的Var1转回POSIXct,继承原时间戳的时区 n_occur$Var1 <- as.POSIXct(as.character(n_occur$Var1), tz = attr(df$detection_timestamp_utc, "tzone")) # 执行左连接 left_join(df, n_occur, by = c("detection_timestamp_utc" = "Var1"))
通过attr(df$detection_timestamp_utc, "tzone")提取原时间戳的时区信息,确保转换后的时间戳与原数据类型、时区完全匹配。
方法二:使用dplyr直接统计(推荐)
无需额外创建统计表,直接在原数据框内分组统计,全程保留POSIXct的时区属性:
library(dplyr) df <- df %>% group_by(detection_timestamp_utc) %>% mutate(occur_count = n()) %>% ungroup()
该方法通过group_by按时间戳分组,mutate新增计数列occur_count,操作简洁且完全避免时区丢失、类型不兼容的问题。
内容的提问来源于stack exchange,提问作者roday
相关产品推荐
相关产品推荐

