2016-12-01 4 views
0

ich die folgende bedingte Anweisung anwenden möchten:Bedingte Anweisung funktioniert nicht

„Wenn das System Tag 1 ist, dann extrahieren Sie die Zeile in der Datenrahmen eine 1 in der TAG-Spalte enthält, wenn es dann nicht nur drucken den vollständigen Datenrahmen aus. "

Ich dachte, ich hätte es richtig gemacht, aber es spuckt nur das Datum aus anstatt die ganze Reihe.

Hier ist mein Beispielcode:

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 

Ich habe versucht, diese ifelse Aussage und die Zeile

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

Es gibt mir dieses Ergebnis zu extrahieren:

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

True Ich möchte dieses Ergebnis:

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

Wenn falsch, ich will dieses Ergebnis:

 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' gibt einen Wert mit der gleichen Form wie' test' ... zurück – Khashaa

Antwort

2

dies stattdessen versuchen:

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

ifelsesubset(test, DAY == 1) zu einem list ist Nötigung und nur das erste Element zurückkehrt, weil min(test$SysDay)==1 eine logische Vektor Länge 1.

+0

Perfekt, danke. Ich werde dir diese Antwort in ein paar Minuten geben, sobald es mir erlaubt! –