簡體   English   中英

r中的ifelse條件格式

[英]ifelse conditional formatting in r

我對R比較陌生。我有一個數據框,我想在其中創建一個可進行條件格式化的變量。 以下是我正在使用的數據的樣本。

cycle <- c("M", "O", "O", "O", "O", "M", "O")
irm <- c("200901", "200902", "200903", "200904", "200905", "200906", "200907")
itemcode <- c("611420B004A01", "611420B004A01", "611420B004A01", "611420B004A01", "611420B004A01", "611420B004A01", "611420B004A01")
price <- c(19.00, NA, NA, NA, NA, NA, NA)
dlq <- c(0, 0, 0, 0, 0, 1, 1)
df <- data.frame(itemcode, irm, price, cycle, dlq)

dlq變量取決於循環變量的值。 我想定義它,以便對itemcode的每個唯一值(我有75,000個)

一種。 如果一個周期等於M的一個月內價格= NA,則dlq = 1

如果周期等於O&價格= NA,並且最近的一個月(周期= M價格= NA),則dlq = 1。

C。 否則dlq = 0。

例如,dlq = 1,其中irm = 200907,因為周期= 200906中的M,並且價格等於NA,並且在irm = 200907時也為空。我嘗試使用超前和滯后變量,但是M和O不是常數。 因此,我希望dlq = 1當且僅當周期=“ O”並且價格= NA在上個月(周期= M)時才存在。是否有辦法在ifelse或其他條件下做到這一點? 任何建議/幫助將不勝感激。 非常感謝。

> df$dlq[ is.na(df$price)&df$cycle=="M" ] <- 1
> df$dlq[ is.na(df$price) & df$cycle=="O" & 
          is.na( c(NA, head(df$price,-1))) & # The last two conditions use shifted values
          c(FALSE, head(df$cycle,-1)=="M")  ] <- 1
> df
  cycle    irm      itemcode price dlq
1     M 200901 611420B004A01    19   0
2     O 200902 611420B004A01    NA   0
3     O 200903 611420B004A01    NA   0
4     O 200904 611420B004A01    NA   0
5     O 200905 611420B004A01    NA   0
6     M 200906 611420B004A01    NA   1
7     O 200907 611420B004A01    NA   1
> library('plyr');library('dplyr')
> df %>% tbl_df %>% mutate(dlq=ifelse((cycle=='M' & is.na(price))|((cycle=='O' & is.na(price)) & (cycle[nrow(.)]=='M' & is.na(price[nrow(.)]))),1,0))
Source: local data frame [7 x 5]

       itemcode    irm price  cycle   dlq
         (fctr) (fctr) (dbl) (fctr) (dbl)
1 611420B004A01 200901    19      M     0
2 611420B004A01 200902    NA      O     0
3 611420B004A01 200903    NA      O     0
4 611420B004A01 200904    NA      O     0
5 611420B004A01 200905    NA      O     0
6 611420B004A01 200906    NA      M     1
7 611420B004A01 200907    NA      O     0

想知道我是否誤會了?

暫無
暫無

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

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