#r #csv #ggplot2
#r #csv #ggplot2
Вопрос:
Я пытаюсь использовать R и ggplot для создания гистограмм количества частот слов из большой электронной таблицы, вместо того, чтобы использовать для этого Excel. Я написал функцию для извлечения первой строки (для периодов времени), а затем требуемой строки из файла csv, чтобы создать новый фрейм данных с этим в двух столбцах, а затем отобразить эти данные в виде гистограммы. Однако созданный график имеет ось y без линейного масштаба. Кто-нибудь может помочь мне объяснить, почему это так и как это исправить? (в идеале более простое решение!)
Функция выглядит следующим образом, где ‘term’ указывает строку файла csv (‘data’) Меня интересует:
make_plot <- function(data, term){
periods = data[1,]
results = data[data$V1 == term,]
df = merge(x=results, y=periods, all.x=TRUE, all.y=TRUE)
df = as.data.frame(t(df))
df = df[-1,]
plot = ggplot(df, aes(V1, V2)) geom_col() labs(x="Period", y="Freq") theme(axis.text.x = element_text(angle = 90))
return(df)
}
Это дает фрейм данных, который выглядит следующим образом:
> head(df)
V1 V2
V2 Freq_2014q4 2226
V3 Freq_2015q1 2444
V4 Freq_2015q2 2088
V5 Freq_2015q3 2688
V6 Freq_2015q4 2804
V7 Freq_2016q1 8794
Комментарии:
1. Попробуйте добавить
df$V2 = as.numeric(df$V2)
передplot
строкой.2. Спасибо. Это изменяет ось y, но, похоже, изменяет значения в V2 на гораздо меньшие числа? Если я этого не сделаю и спрошу класс V2, он сообщает об этом как «фактор» — есть ли способ изменить это на числовое и сохранить исходное правильное значение?
3. Я обнаружил, что это необходимо сделать
as.numeric(as.character(df$V2))
, и это работает сейчас. Спасибо за вашу помощь.