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