如何在r中根据两个变量对单列进行分组。

问题描述 投票:0回答:1

我有一个数据框,有四列,格式如下。

第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 "功能?

r
1个回答
0
投票

我们可以 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)

资料

DF <- data.frame(Yellow_0, Purple_0, Yellow_6, Purple_6)
© www.soinside.com 2019 - 2024. All rights reserved.