r - 如何在 R 循环中不将 POSIXct 转换为数字
问题描述
我在 R 中有一个循环,它根据某些条件获取 POSIXct 列的先前值。但是,新列不再采用 POSIXct 格式,而是转换为数字。我怎样才能避免这种情况?
# Set up dataframe
df <- data.frame(
building = c('a','a','a','a','b','b','b'),
hour = c(as.POSIXct(c('2019-01-01 15:00:00','2019-01-01 15:00:00','2019-01-01 17:00:00','2019-01-01 18:00:00',
'2019-01-01 15:00:00','2019-01-01 16:00:00','2019-01-01 17:00:00')))
)
#Loop to get previous value of 'hour' based on conditions
df$prev_hour <- NA
for (i in 2:nrow(df)){
if(df$building[i]==df$building[i-1] & as.integer(df$hour[i]-df$hour[i-1])<2){
df$prev_hour[i] <- as.POSIXct(df$hour[i-1])
}
}
df
building hour prev_hour
a 2019-01-01 15:00:00 NA
a 2019-01-01 15:00:00 1546372800
a 2019-01-01 17:00:00 NA
a 2019-01-01 18:00:00 1546380000
b 2019-01-01 15:00:00 NA
b 2019-01-01 16:00:00 1546372800
b 2019-01-01 17:00:00 1546376400
解决方案
推荐阅读
- python - 按行合并 CSV 文件
- laravel - Route::get 在 Laravel 8 API 中返回空白
- api - 邮递员连接 ECONNREFUSED 127.0.0.1:8080
- jmeter - 如何在 Jmeter 中为 xml 编写 xpath 断言
- swift - 检查用户是否启用了私有mac地址iOS 14
- typescript - typeError 宏脚本 google sheet 删除编辑器未定义
- powershell - 附加文件并创建新工作项
- sql - SQL 数据透视附件
- javascript - 反应中的fullcalendar v5 useref()不包含日历
- javascript - 为什么这个函数的结果没有赋值 1