2016-12-01 154 views
0

我想申請以下條件語句:條件語句不工作

「如果系統一天是1,然後提取在DAY列包含1數據幀的行,如果它不是那麼只是打印完整的數據框「。

我以爲我是對的,但它只是吐出日期而不是整行。

這裏是我的示例代碼:

library(lubridate) 
today <- Sys.Date() 
day<-format(today, format="%d") 
day <-as.numeric(day) 
day 

[1] 1 

DATE <- as.Date(c('2016-10-31', '2016-11-01','2016-11-02','2016-11-03')) 
Revenue <- c(1000,2000,3000,4000) 
Count <- c(21000, 23400, 26800,5000) 
Price<- c(5.00, 6.00, 6.75, 2.34) 
df<-data.frame(DATE, Revenue, Count, Price) 

df 

     DATE Revenue Count Price 
1 2016-10-31 1000 21000 5.00 
2 2016-11-01 2000 23400 6.00 
3 2016-11-02 3000 26800 6.75 
4 2016-11-03 4000 5000 2.34  

df<-data.frame(DATE, Revenue, Count, Price) 
df$DAY<-day(df$DATE) 
test<-as.data.frame(df) 
test$SysDay<-day 

     DATE Revenue Count Price DAY SysDay 
1 2016-10-31 1000 21000 5.00 31  1 
2 2016-11-01 2000 23400 6.00 1  1 
3 2016-11-02 3000 26800 6.75 2  1 
4 2016-11-03 4000 5000 2.34 3  1 

我想這ifelse語句,並提取

ifelse(min(test$SysDay)==1, subset(test, DAY == 1), test) 

這是給我這樣的結果行:

[[1]] 
[1] "2016-11-01"  

如果真,我想要這個結果:

 DATE Revenue Count Price DAY SysDay 
2 2016-11-01 2000 23400  6 1  1 

如果假的,我想這樣的結果:

 DATE Revenue Count Price DAY SysDay 
1 2016-10-31 1000 21000 5.00 31  1 
2 2016-11-01 2000 23400 6.00 1  1 
3 2016-11-02 3000 26800 6.75 2  1 
4 2016-11-03 4000 5000 2.34 3  1 
+0

'?ifelse'返回一個與'test'形狀相同的值... – Khashaa

回答

2

試試這個:

if (min(test$SysDay)==1) { subset(test, DAY == 1) } else { test } 

ifelse被強迫subset(test, DAY == 1)list,只返回第一個元素,因爲min(test$SysDay)==1是一個合乎邏輯的矢量長度爲1.

+0

完美,謝謝。一旦它允許我,我會在幾分鐘內給你這個答案的功勞! –