Преобразование даты в R

avatar
JCVD
1 июля 2021 в 18:13
74
2
1

Я хочу преобразовать эти даты в формат "1995-01", "1995-02" и т. д.

Вот некоторые из моих данных

              Date     Change
1     January-1995 0.01417476
2    February-1995 0.01427050
3       March-1995 0.01556348
4       April-1995 0.01644737
5         May-1995 0.01603727
6        June-1995 0.01627500
7        July-1995 0.01557800
8      August-1995 0.01429773
9   September-1995 0.01344300
10    October-1995 0.01334667
11   November-1995 0.01328429
12   December-1995 0.01345368
13    January-1996 0.01293091
14   February-1996 0.01301762
15      March-1996 0.01289048
16      April-1996 0.01268476
17        May-1996 0.01287364
18       June-1996 0.01253400
19       July-1996 0.01254591
20     August-1996 0.01271238
21  September-1996 0.01245700
22    October-1996 0.01201636
23   November-1996 0.01191300
24   December-1996 0.01195600

Я попробовал это:

date <- as.Date(Data$Date,format="%B/%Y")

и это

date <- as.Date(paste0("01/", Data$Date),format = "%m/%Y")

Но это просто верни меня

[1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA

Я застрял!

Источник

Ответы (2)

avatar
akrun
1 июля 2021 в 18:14
1

Последний параметр можно изменить, чтобы включить %d для дня, когда мы проводим pasteдень. Также в format укажите правильный разделитель и %B- (полное название месяца), где как %m- месяц в виде десятичного числа)

as.Date(paste0("01/", Data$Date),format = "%d/%B-%Y")

Или используйте lubridate

library(lubridate)
my(Data$Date)
my("January-1995")
[1] "1995-01-01"
avatar
ThomasIsCoding
1 июля 2021 в 20:14
0

Вот еще одна базовая опция R, но с выводом типа string (не Date)

x <- c("January-1995", "February-1996")

paste0(
    gsub("\\D", "", x),
    "-",
    sprintf("%02d", match(gsub("-.*", "", x), month.name))
)

что дает

[1] "1995-01" "1996-02"