我有一个数据集,其中包含11月份的每小时电价值。它们是从存储1-24小时的数据库中下载的。我试图将这些值替换为00:00格式,以便随后创建posixct对象。
MCP<-structure(list(MARKET_DATE = c("1/11/2020", "1/11/2020", "1/11/2020",
"1/11/2020", "1/11/2020", "1/11/2020", "1/11/2020", "1/11/2020",
"1/11/2020", "1/11/2020", "1/11/2020", "1/11/2020", "1/11/2020",
"1/11/2020", "1/11/2020", "1/11/2020", "1/11/2020", "1/11/2020",
"1/11/2020", "1/11/2020", "1/11/2020", "1/11/2020", "1/11/2020",
"1/11/2020", "2/11/2020", "2/11/2020", "2/11/2020", "2/11/2020"
), MARKET_HOUR = c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L,
12L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 20L, 21L, 22L, 23L, 24L,
1L, 2L, 3L, 4L), DAM = c(59.52, 59.01, 59.01, 59.01, 59.01, 59.01,
47.59, 55.97, 59.01, 41.01, 39.01, 39.01, 39.01, 27.01, 41.01,
54.26, 59.01, 92.02, 59.52, 65.46, 59.52, 59.01, 52.46, 41.01,
43.09, 43.09, 43.01, 43.09), LIDA1 = c(59.52, 59.11, 59.11, 59.11,
59.11, 59.01, 47.59, 53.43, 59.01, 41.01, 39.01, 39.01, 39.01,
27.11, 41.28, 58.26, 59.11, 92.12, 59.62, 65.92, 59.62, 59.11,
52.56, 41.06, 41.26, 43.09, 43.01, 38.79)), row.names = c(NA,
28L), class = "data.frame")
我尝试使用replace函数,但是它仅适用于前24行,而不适用于该列的所有值。
MCP$MARKET_HOUR<-replace(
MCP$MARKET_HOUR,
c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24),
c("00:00", "01:00", "02:00", "03:00", "04:00", "05:00", "06:00", "07:00", "08:00", "09:00", "10:00", "11:00", "12:00", "13:00", "14:00", "15:00", "16:00", "17:00", "18:00", "19:00", "20:00", "21:00", "22:00", "23:00")
)
如果您对如何用正确的小时和小时格式替换小时列的所有值有任何想法,我将不胜感激。先感谢您!
我们可以用sprintf
做format
铃声,而不是replace
ING
MCP$MARKET_HOUR<- with(MCP, sprintf("%02d:00", MARKET_HOUR-1))
MCP$MARKET_HOUR
#[1] "00:00" "01:00" "02:00" "03:00" "04:00" "05:00" "06:00" "07:00" "08:00" "09:00" "10:00" "11:00" "12:00" "13:00" "14:00" "15:00"
#[17] "16:00" "17:00" "18:00" "19:00" "20:00" "21:00" "22:00" "23:00" "00:00" "01:00" "02:00" "03:00"
或者另一种选择是str_pad
从stringr
library(stringr)
str_c(str_pad(MCP$MARKET_HOUR-1, pad = '0', width = 2), ":00")
关于为什么它不起作用replace
。如果我们指定数字索引作为list
参数,它将仅替换位置索引中提到的那些位置,而不替换其他位置,即仅替换前24个值。一个简单的例子是
replace(5:20, 1:3, NA)
#[1] NA NA NA 8 9 10 11 12 13 14 15 16 17 18 19 20
仅替换前三个值,因为这些是list
参数中给定的位置索引
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句