簡體   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