在R中切片多列

时间:2019-05-22 12:39:42

标签: r dataframe subset slice data-analysis

在python中,使用pandas来对列进行切片,其中data是数据集,而'pickup_latitude是行之后的列

data = data[(data['pickup_latitude']<=90) & (data['pickup_latitude']>=-90)]

R中的上述等效项以及对于具有不同取值范围的多列也等效?

1 个答案:

答案 0 :(得分:0)

同样的方法也可以,但是您需要在末尾添加逗号以表明您正在索引行:

data = data[(data['pickup_latitude']<=90) & (data['pickup_latitude']>=-90), ]

例如,在内置mtcars数据上:

> mt = mtcars[mtcars['mpg'] <= 20 & mtcars['mpg'] >= 15, ]
> mt
                   mpg cyl  disp  hp drat    wt  qsec vs am gear carb
Hornet Sportabout 18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
Valiant           18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
Merc 280          19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4
Merc 280C         17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4
Merc 450SE        16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3
Merc 450SL        17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3
Merc 450SLC       15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3
Dodge Challenger  15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    2
AMC Javelin       15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    2
Pontiac Firebird  19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2
Ford Pantera L    15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    4
Ferrari Dino      19.7   6 145.0 175 3.62 2.770 15.50  0  1    5    6
Maserati Bora     15.0   8 301.0 335 3.54 3.570 14.60  0  1    5    8

一点解释:在R中,数据帧是列的列表。如果您将方括号与 single 参数一起使用,则假设您是子集列,因为mtcars['mpg']mtcars的mpg列,而data['pickup_latitude']data的pick_latitude列。如果要为行建立索引,则需要使用data[rows, columns]形式的参数,但是如果缺少rowscolumns,将全部假定。因此mtcars[1:3, ]mtcars的前三行,所有列。 mtcars[mtcars['mpg'] <= 20 & mtcars['mpg'] >= 15, ]mtcars符合逻辑要求的行,具有所有列。

还有一些便利功能,可让您避免重新键入data$data[,例如,这将起到相同的作用:

subset(data, pickup_latitude <=90 & pickup_latitude >=-90)