簡體   English   中英

根據 R 中的時間范圍分組新變量

[英]Grouping in new variable based on a time frame in R

我有一個包含兩列的 df,一列帶有日期,一列帶有值。 我想用 gglot 繪制這些值,使用 geom_col。

然而,在過去的時間里有“干預”,這影響了價值觀。 我想通過讓條形在某個日期后改變顏色來突出這些干預措施。

一種方法是使用因子變量(如 TF1、TF2、TF2)創建一個新列(“更改”),並在 aes 部分中設置這些變量。 所以我正在尋找的是一段代碼,它的工作原理如下:

  • 如果日期在 A 和 B 之間,則df$Change為 TF1
  • 如果日期在 C 和 D 之間,則df$Change為 TF2
  • 如果日期在 E 和 F 之間,則df$Change為 TF3

到目前為止我嘗試過的是:

QASTART = as.Date('2020-03-16')
df <- df %>% mutate(Change = Datum >= QASTART)

但它只給了我兩個類別來處理。 我想要至少三個或可能更多。

這是我的 df 的負責人:

structure(list(Date = structure(c(17595, 17602, 17609, 17616, 
17623, 17630), class = "Date"), UPV = c(756L, 696L, 704L, 661L, 
713L, 649L)), row.names = c(NA, 6L), class = "data.frame")

謝謝!

提出的 case_when-solution 對我有用。 可能有比這更優雅的解決方案,但這就是我所做的。

A = as.Date('2018-03-05')
B = as.Date('2020-03-15')
C = as.Date('2020-03-16')
D = as.Date('2020-07-12')
E = as.Date('2020-07-13')
G = as.Date('2020-08-31')

df <- df %>% mutate(Change = case_when( between ( Datum, A, B) ~ "TF1", between(Datum, C, D) ~ "TF2", between(Datum, E, G) ~ "TF3" )) 

ggplot(df, aes(Datum, UPV, col=Change))+geom_col()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM