簡體   English   中英

R:子集返回“0 obs”。

[英]R: Subsetting returns “0 obs.”

我正在嘗試將我的數據集'eggdat'分配到白天和夜晚。 這個:

'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', ] )導致nighttime <- eggdat[eggdat$hour <= '7' & eggdat$hour >= '21', ]集包含'0 obs。',但夜間子集工作正常,所以它恰好相反! 白天: 'data.frame': 0 obs. of 10 variables: '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 ...

我真的不知道該怎么做,我對這一切感到非常困惑。

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

x < 7 & x > 21轉換至x小於7 大於21

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

暫無
暫無

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

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