Podmienečne formátovanie stĺpec s mutovať a regulárny výraz v R

0

Otázka

Som nový v R a programovaní vo všeobecnosti. Mám stĺpca, ktorý obsahuje zoznam dátumov. Niektoré sú v "01 januára 2020" formát, niektoré majú len mesiac a rok (t. j. "januára 2020" iba). Chcem zmeniť ich na nové pole, kde som pridať 01 v prednej časti všetky termíny, ktoré sú v mesiaci roka formát, a potom budem používať lubridate spracovať ju do dátumy

To je to, čo som sa snažil. Snažím sa extrakt prvý znak Dátum stĺpci. Ak to je veľké písmeno, potom som sa budú pridávať "01" na to. Používam tinyverse package vrátane dplyr

df %>% mutate(new_date = ifelse(str_sub(Date, start = 1, end = 1)== "[:upper:]"), paste('01', Date, sep = ' '), new_date = Date)

Vypisuje chybové hlásenie "no chýba", ale ja som si myslel, že budem mať zahrnuté new_date = Date na udržanie súčasného formátovania.

Ďakujeme vám za vašu pomoc!

2

Najlepšiu odpoveď

1

To môže byť vykonané v mnohých ohľadoch.

base R pomocou lookahead a backreference:

sub("(^)(?=[A-Za-z]+)", "\\101 ", date, perl = TRUE)
[1] "01 January 2020"  "01 January 2020"  "12 February 1999" "01 March 2033"

base R iba pomocou backreference:

sub("(^[A-Za-z]+)", "01 \\1", date, perl = TRUE)

dplyr a stringr pomocou rovnakej logiky:

library(dplyr)
library(stringr)

data.frame(date) %>%
  mutate(date = str_replace(date, "(^)(?=[A-Za-z]+)", "\\101 "))

Ak si trvajú na používaní ifelse:

library(dplyr)
library(stringr)

data.frame(date) %>% 
  mutate(date = ifelse(str_detect(date, "^[:upper:]"),
                       sub("^", "01 ", date),
                       date))

Údaje:

date <- c("01 January 2020","January 2020", "12 February 1999", "March 2033")
2021-11-23 16:57:14
0

Tu je non-regulárny výraz možnosť, kde sme sa previesť na Date trieda a format to

library(parsedate)
format(parse_date(date), '%d %B %Y')
[1] "01 January 2020"  "01 January 2020"  "12 February 1999" "01 March 2033"  

údaje

date <- c("01 January 2020","January 2020", "12 February 1999", "March 2033")
2021-11-23 16:43:44

V iných jazykoch

Táto stránka je v iných jazykoch

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................