R中的子集似乎不起作用:具有要作为子集的特定值的行的值

菜鸟

我有一个数据集训练数据集。

train$date<- ydm(train$date) #from format year-date-month
train$item<- as.factor(as.character(train$item))
train$store<- as.factor(as.character(train$store))
train$yearmonth <- format(as.Date(train$date), "%Y%m")
head(train)

date store item sales yearmonth
1 2013-01-01     1    1    13    201301
2 2013-01-02     1    1    11    201301
3 2013-01-03     1    2    14    201301
4 2013-01-04     1    1    13    201301
5 2013-01-05     1    1    10    201301
6 2013-01-06     1    2    12    201301

现在,我只希望计算存储id = 1的行,但是我无法实现。

train_1 <- subset(train, train$store==1)

train_1具有与train相同的确切行数,而实际情况并非如此。

进行完所有操作后,了解一下结构

sapply(train,class)
       date       store        item       sales 
     "Date"    "factor"    "factor"   "integer" 
  yearmonth 
"character" 
阿克伦

可能有前导/滞后空格,这也是一factor类。因此,一种选择是用trimws

train_1 <- subset(train, trimws(store) == 1)

或转换为character子集

train_1 <- subset(train, as.character(store) == '1') 

或使用 grepl

train_1 <- subset(train, grepl('1', store))

更新资料

该子集准确地从913000到91300删除了90%的行。数字混乱。


使用OP的数据集

train <- read.csv(file.choose())
str(train)
#'data.frame':  913000 obs. of  4 variables:
# $ date : Factor w/ 1826 levels "2013-01-01","2013-01-02",..: 1 2 3 4 5 6 7 8 9 10 ...
# $ store: int  1 1 1 1 1 1 1 1 1 1 ...
# $ item : int  1 1 1 1 1 1 1 1 1 1 ...
# $ sales: int  13 11 14 13 10 12 10 9 12 9 ...
train_y <- subset(train, store == 1)
dim(train_y)
#[1] 91300     4
unique(train_y$store)
#[1] 1

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章