2016-03-03 92 views
1

我試圖將我的數據集'eggdat'作爲白天和夜間小時的子集。這:R:子集返回「0 obs」。

'data.frame': 54847 obs. of 10 variables: 
$ year : int 2014 2014 2014 2014 2014 2014 2014 2014 2014 2014 ... 
$ month : int 7 7 7 7 7 7 7 7 7 7 ... 
$ day : int 31 31 31 31 31 31 31 31 31 31 ... 
$ hour : int 20 20 20 20 20 20 20 20 20 20 ... 
$ minute: int 5 5 5 5 5 5 5 5 5 5 ... 
$ second: int 0 1 2 3 4 5 6 7 8 9 ... 
$ Roll : num -159 179 -164 -155 -137 ... 
$ Pitch : num -31.36 -41.05 -23.85 -6.62 -9.13 ... 
$ Yaw : num -71.8 -113.3 -67.2 -140.2 -78.2 ... 
$ temp1 : num 25 33.5 34 34 34 34 34 34 34 34 ... 

子集白天正常工作:

daytime <- eggdat[eggdat$hour >= 7 & eggdat$hour <= 20, ] 

'data.frame': 18847 obs. of 10 variables: 
$ year : int 2014 2014 2014 2014 2014 2014 2014 2014 2014 2014 ... 
$ month : int 7 7 7 7 7 7 7 7 7 7 ... 
$ day : int 31 31 31 31 31 31 31 31 31 31 ... 
$ hour : int 20 20 20 20 20 20 20 20 20 20 ... 
$ minute: int 5 5 5 5 5 5 5 5 5 5 ... 
$ second: int 0 1 2 3 4 5 6 7 8 9 ... 
$ Roll : num -159 179 -164 -155 -137 ... 
$ Pitch : num -31.36 -41.05 -23.85 -6.62 -9.13 ... 
$ Yaw : num -71.8 -113.3 -67.2 -140.2 -78.2 ... 
$ temp1 : num 25 33.5 34 34 34 34 34 34 34 34 ... 

正是這樣做夜間同樣的事情,然而,返回0觀察一個子集:

nighttime <- eggdat[eggdat$hour <= 7 & eggdat$hour >= 21, ] 

'data.frame': 0 obs. of 10 variables: 
$ year : int 
$ month : int 
$ day : int 
$ hour : int 
$ minute: int 
$ second: int 
$ Roll : num 
$ Pitch : num 
$ Yaw : num 
$ temp1 : num 

我真不」噸知道該怎麼辦..我試過使用subset,但沒有成功..我也試過eggdat$hour <- as.factor(eggdat$hour),但無法讓它工作。

更容易混淆的是,在子集函數(daytime <- eggdat[eggdat$hour >= '7' & eggdat$hour <= '20', ]nighttime <- eggdat[eggdat$hour <= '7' & eggdat$hour >= '21', ])中添加引號會導致包含'0 obs。'的白天子集,但夜間子集工作正常,所以它恰恰相反! 白天:'data.frame': 0 obs. of 10 variables: 夜間:

'data.frame': 28800 obs. of 10 variables: 
$ year : int 2014 2014 2014 2014 2014 2014 2014 2014 2014 2014 ... 
$ month : int 7 7 7 7 7 7 7 7 7 7 ... 
$ day : int 31 31 31 31 31 31 31 31 31 31 ... 
$ hour : int 21 21 21 21 21 21 21 21 21 21 ... 
$ minute: int 0 0 0 0 0 0 0 0 0 0 ... 
$ second: int 0 1 2 3 4 5 6 7 8 9 ... 
$ Roll : num 65.8 65.8 66.1 65.6 65.6 ... 
$ Pitch : num 6.35 6.34 6.24 6.4 6.27 ... 
$ Yaw : num 171 172 174 176 176 ... 
$ temp1 : num 41.5 41.5 41.5 41.5 41.5 41.5 41.5 41.5 41.5 41.5 ... 

我真的不知道該怎麼辦,我非常受這一切的迷茫..

回答

3

你想eggdat[eggdat$hour <= 7 | eggdat$hour >= 21, ]

x < 7 & x > 21轉化爲x小於7 AND大於21

x < 7 | x > 21轉換爲x小於7 大於21