Как сгруппировать один столбец на основе двух переменных в r - PullRequest
1 голос
/ 24 апреля 2020

У меня есть фрейм данных с четырьмя столбцами в следующем формате:

столбец 1: 0 Желтый (8 наблюдений) столбец 2: 0 Фиолетовый (9 наблюдений) столбец 3: 6 Желтый (11 наблюдений) столбец 4: 6 Фиолетовый (12 наблюдений)

Yellow_0 <- c(2,5,6,2,6,4,35,6,NA,NA,NA,NA) Purple_0 <- c(12,34,34,54,23,33,2,12,23,NA,NA,NA) Yellow_6 <- c(31,23,4,5,56,43,18,33,5,23,33,NA) Purple_6 <- c(23,5,23,33,45,66,12,23,2,2,23,24)

Я хочу сгруппировать по времени (0 и 6) и цвету (Желтый и Фиолетовый). Я попробовал следующий код (после импорта файла CSV), который группирует переменные по времени и цвету (всего 4 группы) вместо группировки по времени (две группы) и цвету (две группы).
library(tidyverse) library(reshape2) DF <- melt(DF, na.rm = TRUE) DF <- DF %>% group_by(variable) a <- ggplot(DF, aes(x=variable, y= value, colour = variable)) + geom_boxplot()

Как мне выполнить функцию "group_by" как для времени, так и для цвета?

1 Ответ

0 голосов
/ 24 апреля 2020

Мы могли бы separate имена столбцов в два после преобразования в «длинный» формат

library(dplyr)
library(tidyr)
library(ggplot2)
DF %>%
   pivot_longer(cols = everything(), values_drop_na = TRUE) %>%
   separate(name, into = c('color', 'time')) %>%
   ggplot(aes(x = time, y = value, fill = color)) + 
         geom_boxplot() + 
         facet_wrap(~ color)

data

DF <- data.frame(Yellow_0, Purple_0, Yellow_6, Purple_6)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...