ggplot обращается к меткам данных, а не к значениям данных

#r #spss #r-haven #r-labelled

Вопрос:

Я импортировал некоторые данные SPSS в R, данные помечены, и я хочу отобразить имена меток, а не значения. Я пробовал ниже, но он выводит значения

 library(labelled)
library(tidyverse)

cols <- c("White", "Red", "Black", "Green", "Brown", "Pink", "Orange")
letters <- c("D", "E", "F", "G", "H", "I", "J")

# add labels to the color values
tmp <- diamonds %>% 
 mutate(color = as.character(color)) %>%
 set_value_labels(color = setNames(letters, cols)) 

ggplot(tmp)   geom_bar(aes(x=print_labels(color)))
 

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

На графике по-прежнему используются значения цвета в качестве оси y, а не метки. Как мы можем построить метки фреймов данных?

Ответ №1:

Основываясь на cols и letters , я бы создал для них фрейм данных, а затем объединил (через dplyr::inner_join ) с tmp , чтобы создать новый столбец с именами, которые вы хотите вдоль оси x.

 library(ggplot2)
library(dplyr)
library(tibble)

#Create a dataframe key to get the color names for each category and make a new column with the names.
col_key <- attributes(tmp$color)$labels %>%
  as.data.frame() %>%
  dplyr::rename(cols = 1) %>%
  tibble::rownames_to_column("color")

tmp <- dplyr::inner_join(tmp,
                         col_key, by = "color")

ggplot(tmp)  
  geom_bar(aes(x = cols))
 

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

1. Моя проблема заключается в том, что я использую файл данных SPSS с встроенной маркировкой и значениями

2. Почему бы не манипулировать им, как только он перейдет в R? Вы можете настроить рабочий процесс для того, как вы хотите, чтобы рисунок выглядел в R, который может легко работать всякий раз, когда вы вносите обновленный файл из SPSS в R.

3. Возможно, мне придется это сделать, я просто подумал, что должен быть более простой метод. Я не уверен, почему у вас есть ярлыки, когда вы, похоже, не можете получить к ним доступ

4. Причина, по которой я смог их нарисовать, заключается в том, что я не использовал haven маркировку. Я просто сделал inner_join с ключевыми данными (т. Е. буквами и буквами), затем создал новый столбец, а затем использовал его для построения графика.

5. Я просто добавил обходной путь, используя те же методы, но извлекая имена из маркировки убежища. Таким образом, когда вы читаете свои данные из SPSS, вы можете легко получить ключ и названия цветов.

Ответ №2:

 library(haven)

cols <- c("White", "Red", "Black", "Green", "Brown", "Pink", "Orange")
letters <- c("D", "E", "F", "G", "H", "I", "J")

tmp <- diamonds %>% 
  mutate(color = as.character(color)) %>%
  set_value_labels(color = setNames(letters, cols)) 

ggplot(tmp)   geom_bar(aes(x=as_factor(color)))
 

Используя библиотеку haven, мы можем использовать команду as_factor(x), которая преобразует метки в факторы