繁体   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