[英]Plotting when time series is in rows not columns- using R
Excel 允許您在其圖表功能中切換行和列。
我正在嘗試在 R 中復制它。我的數據(如下所示)顯示了每個公司的生產情況。 我無法弄清楚如何在 x 軸上顯示第 1 個月、第 2 個月等,以及如何在同一圖表中顯示每個公司的系列。 任何幫助表示贊賞。
數據:
tibble::tribble( ~Company.Name, ~Month-1, ~Month-2, ~Month-3, ~Month-4, "Comp-1", 945.5438986, 1081.417009, 976.7388701, 864.309703, "Comp 16448.87,13913.19,12005.28,10605.32, “樣Comp-3”,346.9689321,398.2297592,549.1282647,550.4207169, “樣Comp-4”,748.8806367,949.463941,1018.877481,932.3773791)
我將跳過您想要轉置的部分,並推斷您這樣做的目的僅僅是為了幫助繪圖。 我在這里關注的部分是“在 x 軸上顯示第 1 個月、第 2 個月等,並在同一圖表中顯示每個公司的系列” 。
這在基礎圖形中是可行的,但我強烈建議使用ggplot2
(或plotly
或類似的),因為它易於處理這樣的維度圖。 “圖形語法”(兩者都傾向於實現)確實更喜歡這樣的數據采用“長”格式,因此我要做的部分工作是轉換為這種格式。
先說一些數據:
set.seed(2)
months <- paste0("Month", 1:30)
companies <- paste0("Comp", 1:5)
m <- matrix(abs(rnorm(length(months)*length(companies), sd=1e3)),
nrow = length(companies))
d <- cbind.data.frame(
Company = companies,
m,
stringsAsFactors = FALSE
)
colnames(d)[-1] <- months
str(d)
# 'data.frame': 5 obs. of 31 variables:
# $ Company: chr "Comp1" "Comp2" "Comp3" "Comp4" ...
# $ Month1 : num 896.9 184.8 1587.8 1130.4 80.3
# $ Month2 : num 132 708 240 1984 139
# $ Month3 : num 418 982 393 1040 1782
# $ Month4 : num 2311.1 878.6 35.8 1012.8 432.3
# (truncated)
可以使用多個庫完成重塑,包括基礎 R,這里有兩種技術:
library(data.table)
d2 <- melt(as.data.table(d), id = 1, variable.name = "Month", value.name = "Cost")
d2[,Month := as.integer(gsub("[^0-9]", "", Month)),]
d2
# Company Month Cost
# 1: Comp1 1 896.91455
# 2: Comp2 1 184.84918
# 3: Comp3 1 1587.84533
# 4: Comp4 1 1130.37567
# 5: Comp5 1 80.25176
# ---
# 146: Comp1 30 653.67306
# 147: Comp2 30 657.10598
# 148: Comp3 30 549.90924
# 149: Comp4 30 806.72936
# 150: Comp5 30 997.37972
library(dplyr)
# library(tidyr)
d2 <- tbl_df(d) %>%
tidyr::gather(Month, Cost, -Company) %>%
mutate(Month = as.integer(gsub("[^0-9]", "", Month)))
我還將Month
整數化,因為它對有序變量有意義。 這不是絕對必要的,情節只會將它們視為離散的。
情節是反高潮的簡單:
library(ggplot2)
ggplot(d2, aes(Month, Cost, group=Company)) +
geom_line(aes(color = Company))
底線:我認為您無需擔心轉置數據:這樣做會帶來許多復雜性,只會使事情變得混亂。 重塑是一件好事(在我看來),但是這種數據足夠快,如果您的數據以寬格式存儲,您可以毫不費力地重新轉換它。 (但是,如果您正在考慮將其放入數據庫中,我強烈建議您重新考慮“寬”,如果您保留它,您的數據庫架構將具有挑戰性。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.