如何根据某些条件将数据帧的子集存储在另一个数据帧中

时间:2016-03-25 11:15:33

标签: r

我有一个基于2个城市的观察资料很少的csv文件。我添加了一个城市,分别为1和2。我想在不同的城市创建2个独立的数据框。 我使用了两种方法。

  1. 子集函数y <- subset(x, x$code == 1)
  2. 索引方法y <- x[x$code ==1, ]
  3. 两个语句都成功执行但是当我输入y数据帧时,我只得到列名作为0行的输出。

    任何人都可以帮助我使用其他方法或指出我正在使用的方法中的错误吗?

      Code       city  pickup_datetime pickup_date Hour          Hour range
    1    1 Chandigarh 24-03-2016 00:00  24-03-2016    0 00:00:00 - 01:00:00
    2    1 Chandigarh 24-03-2016 01:45  24-03-2016    1 01:00:00 - 02:00:00
    3    1 Chandigarh 24-03-2016 02:00  24-03-2016    2 02:00:00 - 03:00:00
    4    1 Chandigarh 24-03-2016 03:15  24-03-2016    3 03:00:00 - 04:00:00
    5    2   Ludhiana 24-03-2016 00:45  24-03-2016    0 00:00:00 - 01:00:00
    6    2   Ludhiana 24-03-2016 01:46  24-03-2016    1 01:00:00 - 02:00:00
    7    2   Ludhiana 24-03-2016 02:30  24-03-2016    2 02:00:00 - 03:00:00
    

    data.frame':48个障碍物。 20个变量:  $代码:int 1 1 1 1 1 1 1 1 1 1 ...  $ city:因子w / 2级别“Chandigarh”,“Ludhiana”:1 1 1 1 1 1 1 1 1 1 ...  $ pickup_datetime:因子w / 43级别“24-03-2016 00:00”,..:1 3 5 7 9 10 11 14 15 18 ...  $ pickup_date:因子w / 1级别“24-03-2016”:1 1 1 1 1 1 1 1 1 1 ...  $ Hour:int 0 1 2 3 4 5 6 7 8 9 ...  $ Hour.range:因子w / 24级别“00:00:00 - 01:00:00”,..:1 2 3 4 5 6 7 8 9 10 ...

3 个答案:

答案 0 :(得分:0)

试试这个:

y <- subset(x, x$Code == 1)

y <- x[x$Code ==1, ]

答案 1 :(得分:0)

我会用

y <- subset(x, Code==1)

因为列名是“代码”而不是“代码”。请注意,x$Code内不需要subset

如果我们需要为每个“代码”创建两个数据集,我们可以split data.framelistdata.frame

lst <- split(x, x$Code)

如果需要将其作为全球环境中的单个data.frames,

list2env(setNames(lst, paste0("y", names(lst))), 
                       envir= .GlobalEnv)

答案 2 :(得分:0)

你可以试试这个:

y<-data.frame(subset(x[x$Code==1,]))

其中,x - 父数据帧,y - 仅具有代码= 1的数据帧