#r #dataframe #ggplot2 #bar-chart
#r #dataframe #ggplot2 #столбчатая диаграмма
Вопрос:
R новичок здесь создал следующий код для создания фрейма данных» хотел бы теперь создать категориальный столбчатый график, но ggplot не позволил бы мне это сделать. Есть ли возможность переформатировать фрейм данных для работы ggplot. я прикрепил изображение data.frame.
library(ggplot2)
library(dplyr)
#create dataframe
df_conversionrates <- data.frame(matrix(ncol = 7, nrow = 2))
colnames(df_conversionrates) <- (days = c("Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"))
rownames(df_conversionrates) <- (category = c("conversionrate_control","conversionrate_treatment"))
#calculate conversion rates
for (g in 1:2)
{
for(n in 1:7)
{
df_conversionrates[g,n] <- nrow(filter(rocketfuel, test==(g-1) amp; mode_impr_day==n amp; converted==1))/nrow(filter(rocketfuel,mode_impr_day==n))*100
}
}
Комментарии:
1. Пожалуйста, не создавайте больше работы для других людей, вандализируя свои сообщения. Размещая в сети Stack Exchange, вы предоставляете Stack Exchange не подлежащее отзыву право в соответствии с лицензией CC BY-SA 4.0 на распространение этого контента (т. Е. Независимо от ваших будущих решений). Согласно политике обмена стеками, распространяется версия post, не подвергшаяся вандализму. Таким образом, любой вандализм будет отменен. Если вы хотите узнать больше об удалении записи, пожалуйста, смотрите: Как работает удаление?
Ответ №1:
Вам нужно, чтобы ваши данные были в длинном формате, чтобы заставить ggplot работать с этими данными. Ваши данные не были воспроизводимы (без транскрибирования вашего изображения), поэтому ниже приведено приблизительное представление ваших данных:
df_conversionrates <-
data.frame(matrix(c(0.09, 0.05, 0.067, 0.095, 0.067, 0.05, 0.073,
3.2, 2.9, 2.4, 2.1, 2.2, 2.1, 2.4),
byrow = TRUE, nrow = 2))
Мы можем преобразовать данные в фрейм данных длинного формата, используя stack
функцию base R, и добавить уровень фактора, чтобы указать, имеем ли мы в виду группу лечения или контрольную группу:
df <- stack(df_conversionrates)
df$group <- factor(rep(c("control", "treatment"), 7))
Это означает, что df
теперь это выглядит так:
df
#> values ind group
#> 1 0.090 Monday control
#> 2 3.200 Monday treatment
#> 3 0.050 Tuesday control
#> 4 2.900 Tuesday treatment
#> 5 0.067 Wednesday control
#> 6 2.400 Wednesday treatment
#> 7 0.095 Thursday control
#> 8 2.100 Thursday treatment
#> 9 0.067 Friday control
#> 10 2.200 Friday treatment
#> 11 0.050 Saturday control
#> 12 2.100 Saturday treatment
#> 13 0.073 Sunday control
#> 14 2.400 Sunday treatment
Теперь построение графика простое:
ggplot(df, aes(ind, values, fill = group))
geom_col(position = position_dodge())
labs(x = "Weekday", y = "Value")