繁体   English   中英

将数据框中的 week.year 格式化为在 R 中从零开始

[英]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_padstringr

dataset$CAL2 <- stringr::str_pad(dataset$CAL, 6, pad = "0")

我们可以使用sprintfmutate

library(dplyr)
dataset %>%
  mutate(CAL2 = sprintf("%06s", CAL))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM