[英]formatting week.year in data frames to have starting zero in R
我有一个数据框列表,其中每个数据框都包含格式为 week.year 的日期,例如 01.2019、02.2019 等。 我想在个位数周前保留 0,例如 01 或 02,因为现在它正在将其更改为 1,2,依此类推。 我编写了以下代码,它在 dataset$CAL 列具有 week.year 值的情况下完美运行。
X <-list()
x <- nchar(dataset$CAL)
counter=1
for (i in x) {
if (i==6){
dataset$CAL[counter]<- paste0("0", dataset$CAL[counter])
}
else {
dataset$CAL[counter]<-dataset$CAL[counter]
}
counter <- counter+1
}
但这有一个严重的性能问题,加载时间太长,当然也不推荐在 R 中使用 for 循环。 我尝试使用 lapply function 但它没有给出适当的结果
dataset$CAL <- lapply(dataset$CAL, function(x) if (nchar(dataset$CAL)==6) {paste0("0", dataset$CAL)} else {dataset$CAL})
这个方向的任何指示? 非常感谢帮助。
我认为sprintf
会解决这个问题:
dataset$CAL2 <- sprintf("%06s", dataset$CAL)
或使用来自str_pad
的stringr
。
dataset$CAL2 <- stringr::str_pad(dataset$CAL, 6, pad = "0")
我们可以使用sprintf
和mutate
library(dplyr)
dataset %>%
mutate(CAL2 = sprintf("%06s", CAL))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.