我想在下面的代碼中做一個簡短的條件。請注意,我將輸入資料dmda<-"2021-07-01", CategoryChosse<-"FDE", DTest<-"0". 如果您將代碼運行至med,您會注意到其中med沒有與DTest="0". 正如您在DxI'm using date before date1(28/06) 進行分析中所見,請注意我DTT = "0"在 days before 中沒有任何資料date1,因此在med我沒有任何資料。
獲取代碼med
library(dplyr)
library(tidyverse)
library(lubridate)
df1 <- structure(
list(date1= c("2021-06-28","2021-06-28","2021-06-28","2021-06-28"),
date2 = c("2021-06-23","2021-06-24","2021-06-30","2021-07-01"),
DTT= c("Hol","Hol","Hol",0),
Week= c("Wednesday","Thursday","Wednesday","Thursday"),
Category = c("ABC","FDE","ABC","FDE"),
DR1 = c(4,1,1,2),
DR01 = c(4,1,2,3), DR02= c(4,2,0,2),DR03= c(9,5,0,1),
DR04 = c(5,4,3,2),DR05 = c(5,4,0,2)),
class = "data.frame", row.names = c(NA, -4L))
dmda<-"2021-07-01"
CategoryChosse<-"FDE"
DTest<-"0"
Dx<-subset(df1,df1$date2<df1$date1)
x<-Dx %>% select(starts_with("DR0"))
x<-cbind(Dx, setNames(Dx$DR1 - x, paste0(names(x), "_PV")))
PV<-select(x, date2,Week, Category, DTT, DR1, ends_with("PV"))
med<-PV %>%
group_by(Category,Week,DTT) %>%
summarize(across(ends_with("PV"), median))
> med
# A tibble: 2 x 8
# Groups: Category, Week [2]
Category Week DTT DR01_PV DR02_PV DR03_PV DR04_PV DR05_PV
<chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
1 ABC Wednesday Hol 0 0 -5 -1 -1
2 FDE Thursday Hol 0 -1 -4 -3 -3
從那里,我想創建兩個條件來生成一個名為 SPV
如果我Dtype="0"在med做:
SPV<-df1%>%
inner_join(med, by = c('Category', 'Week','DTT')) %>%
mutate(across(matches("^DR0\\d $"), ~.x
get(paste0(cur_column(), '_PV')),
.names = '{col}_{col}_PV')) %>%
select(date1:Category, DR01_DR01_PV:last_col())
SPV <- SPV %>%
filter(date2 == dmda, Category == CategoryChosse, DTT==DTest)
如果我沒有Dtype="0"在med做:
SPV<-df1%>%
inner_join(med, by = c('Category', 'Week')) %>%
mutate(across(matches("^DR0\\d $"), ~.x
get(paste0(cur_column(), '_PV')),
.names = '{col}_{col}_PV')) %>%
select(date1:Category, DR01_DR01_PV:last_col())
SPV <- SPV %>%
filter(date2 == dmda, Category == CategoryChosse)
uj5u.com熱心網友回復:
根據條件,if/else可以使用運算式
if(any(med$DTT == DTest & med$Category== CategoryChosse, na.rm = TRUE)) {
SPV<-df1%>%
inner_join(med, by = c('Category', 'Week','DTT')) %>%
mutate(across(matches("^DR0\\d $"), ~.x
get(paste0(cur_column(), '_PV')),
.names = '{col}_{col}_PV')) %>%
select(date1:Category, DR01_DR01_PV:last_col())
SPV <- SPV %>%
filter(date2 == dmda, Category == CategoryChosse, DTT==DTest)
} else {
SPV <- df1%>%
inner_join(med, by = c('Category', 'Week')) %>%
mutate(across(matches("^DR0\\d $"), ~.x
get(paste0(cur_column(), '_PV')),
.names = '{col}_{col}_PV')) %>%
select(date1:Category, DR01_DR01_PV:last_col())
SPV <- SPV %>%
filter(date2 == dmda, Category == CategoryChosse)
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/388782.html
標籤:r
