熔化一个频率table以便使用ggplot2
Melt a frequency table in order to use ggplot2
我有一个与这个相似的“频率table”
# Create a matrix
df<- matrix(sample(0:10,35,replace=T),nrow=5, ncol=7)
# Rename columns and rows
colnames(df) <- c("Monday","Tuesday", "Wednesday", "Thursday", "Friday",
"Saturday", "Sunday")
row.names(df) <- c(2015, 2016, 2017, 2018, 2019)
我想使用 ggplot2
来表示信息,但我需要将此信息转换成如下形式:
Day Year Frequency
Monday 2015 10
Monday 2016 7
Monday 2017 13
我尝试使用 reshape2
包中的 melt()
函数,但我没有得到我想要的,因为第二列没有出现(可能是因为它对应于 table).
如有任何帮助,我们将不胜感激,
你的第一列实际上是你的行名,当你转换为数据框时,它不算作一列。因此,首先,将矩阵转换为数据框,然后将行名称添加到数据框 (rownames_to_column
),然后使用 melt
:
reshape2::melt(tibble::rownames_to_column(data.frame(df)))
library(tidyverse)
# Create a matrix
df <- matrix(sample(0:10, 35, replace = T), nrow = 5, ncol = 7)
# Rename columns and rows
colnames(df) <- c(
"Monday", "Tuesday", "Wednesday", "Thursday", "Friday",
"Saturday", "Sunday"
)
row.names(df) <- c(2015, 2016, 2017, 2018, 2019)
df %>%
as_tibble(rownames = "year") %>%
pivot_longer(-year)
#> # A tibble: 35 × 3
#> year name value
#> <chr> <chr> <int>
#> 1 2015 Monday 9
#> 2 2015 Tuesday 5
#> 3 2015 Wednesday 6
#> 4 2015 Thursday 9
#> 5 2015 Friday 6
#> 6 2015 Saturday 10
#> 7 2015 Sunday 3
#> 8 2016 Monday 10
#> 9 2016 Tuesday 2
#> 10 2016 Wednesday 6
#> # … with 25 more rows
由 reprex package (v2.0.0)
于 2022-04-29 创建
我有一个与这个相似的“频率table”
# Create a matrix
df<- matrix(sample(0:10,35,replace=T),nrow=5, ncol=7)
# Rename columns and rows
colnames(df) <- c("Monday","Tuesday", "Wednesday", "Thursday", "Friday",
"Saturday", "Sunday")
row.names(df) <- c(2015, 2016, 2017, 2018, 2019)
我想使用 ggplot2
来表示信息,但我需要将此信息转换成如下形式:
Day Year Frequency
Monday 2015 10
Monday 2016 7
Monday 2017 13
我尝试使用 reshape2
包中的 melt()
函数,但我没有得到我想要的,因为第二列没有出现(可能是因为它对应于 table).
如有任何帮助,我们将不胜感激,
你的第一列实际上是你的行名,当你转换为数据框时,它不算作一列。因此,首先,将矩阵转换为数据框,然后将行名称添加到数据框 (rownames_to_column
),然后使用 melt
:
reshape2::melt(tibble::rownames_to_column(data.frame(df)))
library(tidyverse)
# Create a matrix
df <- matrix(sample(0:10, 35, replace = T), nrow = 5, ncol = 7)
# Rename columns and rows
colnames(df) <- c(
"Monday", "Tuesday", "Wednesday", "Thursday", "Friday",
"Saturday", "Sunday"
)
row.names(df) <- c(2015, 2016, 2017, 2018, 2019)
df %>%
as_tibble(rownames = "year") %>%
pivot_longer(-year)
#> # A tibble: 35 × 3
#> year name value
#> <chr> <chr> <int>
#> 1 2015 Monday 9
#> 2 2015 Tuesday 5
#> 3 2015 Wednesday 6
#> 4 2015 Thursday 9
#> 5 2015 Friday 6
#> 6 2015 Saturday 10
#> 7 2015 Sunday 3
#> 8 2016 Monday 10
#> 9 2016 Tuesday 2
#> 10 2016 Wednesday 6
#> # … with 25 more rows
由 reprex package (v2.0.0)
于 2022-04-29 创建