r - 如何在数据框中创建具有多列的组
问题描述
如何创建具有多列的组?
条形图:如何创建组(使用列)以根据组对条形进行着色。
structure(list(DH105 = c(0.95238, 0.8922,
0.8232, 0.2323), DH106 = c(0, 0.5327,
0.5337, 0.8232), DH107 = c(0.2736,
0.2321, 0.7382, 0.8923),
DH108 = c(0.2332, 0, 0, 0.3213),
DH112 = c(0.0315, 0.2639, 0.0321,
0.2673), DH113 = c(0.2372, 0.2871,
0.7222, 0)), row.names = c(NA, -4L), class = c("tbl_df",
"tbl", "data.frame"))
我有一个列名为 A、B、C 等的数据框。我想将 A 和 B 分配给第 1 组;C、D、E 到第 2 组。这样我就可以根据组为图着色。
解决方案
您可以利用 tidyverse 收集数据,然后将其分类:
library(tidyverse)
dat <- structure(list(A = c(0.9523, 0.06944,
0.53061, 0.11111, 0.03125, 0.64794,
0.10763, 0.02782, 0.0374149659863946, 0.8439),
B = c(0, 0.2378, 0.0068, 0.8328, 0.7292, 0.7539, 0.7439, 0.0742, 0.5272, 0.6822),
C = c(0.0273, 0.0901, 0.7778, 0.9462, 0.5327, 0.2744, 0.5327, 0.4262, 0.6821, 0.03125),
D = c(0.0297, 0, 0, 0.03462, 0.0272, 0.0325, 0.6282, 0.6282, 0.6329, 0.8925),
E = c(0.0325, 0.0829, 0.6328, 0.5237, 0.5722, 0.7283, 0.6382, 0.5637, 0.5632, 0.0532)),
row.names = c(NA, -10L), class = c("tbl", "data.frame"))
dat_clean <- dat %>%
gather(key = "col", value = "value") %>%
mutate(group = case_when(
col %in% c("A","B") ~ "group1",
col %in% c("C", "D", "E") ~ "group2"
))
ggplot(dat_clean, aes(x = col, y = value, fill = group)) +
geom_bar(stat = 'identity') +
theme(legend.position = 'None')
由reprex 包(v0.2.1)于 2019 年 4 月 30 日创建
推荐阅读
- python - 如何优雅地在循环中添加列表元素?
- spring-batch - 在 FlatFileItemReader 自定义 bufferedReader 实例中检测作业何时停止
- python - 读取文件的前 10 行;如果更短只阅读那些行
- python - 如何使用 Graphql 的长字符串参数向我的后端服务器发布请求
- android - Android 资源链接失败。AAPT:错误:找不到资源 android:attr/dialogCornerRadius
- typescript - Vue 没有从我的插件中看到组件
- reactjs - 在反应中集成幸运橙
- python - 有没有办法在 df.loc 关键字中指定变量名?
- go - 如何知道 2 个 go 地图是否引用相同的数据
- java - 独立/嵌入式 Web 服务器,用于制作可移植的 Web 应用程序