我有一個類似于這個的“頻率表”
# 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
我嘗試使用包中的melt()函式,reshape2但沒有得到我想要的,因為第二列沒有出現(可能是因為它對應于表的行名)。
任何幫助,將不勝感激,
uj5u.com熱心網友回復:
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 包(v2.0.0)于 2022-04-29 創建
uj5u.com熱心網友回復:
您的第一列實際上是您的行名,當您轉換為資料框時,它不計為一列。因此,首先,將矩陣轉換為資料框,然后將行名添加到資料框 ( rownames_to_column),然后使用melt:
reshape2::melt(tibble::rownames_to_column(data.frame(df)))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/468211.html
上一篇:在帶有垂直線的水平條中繪圖
