Перевести месяцы в r с итальянского на английский

#r #date #dataframe

#r #Дата #фрейм данных

Вопрос:

Я строю некоторые данные, и мне нужно создать несколько графиков. Разные категории — это месяцы, и поскольку мне нужно, чтобы они отображались по порядку, а не в алфавитном порядке, я преобразовал дату в коэффициент с

 dd.tot$month <- factor(format(dd.tot$month, "%b"), 
                       levels=format(ISOdate(2000, 1:12, 1), "%b"))
  

Поскольку моим системным языком (и родным языком, если на то пошло) является итальянский, столбец месяца во фрейме данных dd.tot написан на итальянском языке.
Но мне нужно, чтобы они использовали английскую аббревиатуру (статья вся на английском, и это будет единственная часть на итальянском).
Я попытался создать новый вектор с различными сокращениями для применения к столбцу с

  mymonths <- c("Jan","Feb","Mar",
               "Apr","May","Jun",
               "Jul","Aug","Sep",
               "Oct","Nov","Dec")

dd.tot$month <- mymonths[ dd.tot$month ]
  

Но когда я отображаю это с помощью ggplot , они отображаются в алфавитном порядке. Как мне их перевести и использовать в качестве фактора?

Комментарии:

1. Ваши уровни должны располагаться в том порядке, в каком вы хотите, чтобы были нанесены на график ваши месяцы.

Ответ №1:

Вот пример некоторых данных, в которых мы исправляем две проблемы.

 # My data
df <- data.frame(mymonths = c("Jan","Feb", "Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"),
                 somevalue = c(1:12))

# Plotting
library(ggplot2)
ggplot(df, aes(mymonths, somevalue))   geom_bar(stat="identity")
  

введите описание изображения здесь

 # Fixing order
df$mymonths <- factor(df$mymonths, levels = c("Jan","Feb", "Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"))

# Plotting
ggplot(df, aes(mymonths, somevalue))   geom_bar(stat="identity")
  

введите описание изображения здесь

 # Fixing labels
df$mymonths <- factor(df$mymonths, 
                      levels = c("Jan","Feb", "Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"),
                      labels = c("Jan_cool","Feb_cool", "Mar_cool","Apr_cool","May_cool","Jun_cool","Jul_cool","Aug_cool","Sep_cool","Oct_cool","Nov_cool","Dec_cool"))

# Plotting
ggplot(df, aes(mymonths, somevalue))   geom_bar(stat="identity")
  

введите описание изображения здесь

Ответ №2:

вы можете установить местный язык на английский. Просто введите это:

  Sys.setlocale("LC_TIME", "English")
  

Тогда вам не нужно их переводить, и вы можете упорядочить их следующим образом:

 mymonths <- format(seq.Date(from = as.Date("2018-01-01"), to = as.Date("2018-12-01"), by = "m"), "%b")

dd.tot$month <- factor(format(dd.tot$month, %b), levels = mymonths)
  

Если вы хотите перевести его обратно на итальянский, просто введите

 Sys.setlocale("LC_TIME", "Italian")
  

Комментарии:

1. Я пробовал… это ничего не делает. В ответ я получаю «[1] «English_United States.1252» «, но когда я снова пытаюсь построить график, ggplot по-прежнему использует итальянские сокращения для месяца

2. вам нужно снова запустить весь код после того, как вы изменили локальные