R逻辑使用数据帧

时间:2014-07-25 18:40:28

标签: r dataframe logic

我正在使用R中的mtcars数据集,我想要做的是将汽车列表与原始数据集分开,其中" carb"全部值== 1.

mtcars
attach(mtcars)
gc_1 <- c(mtcars[which(carb == 1),])
as.data.frame(gc_1)

   mpg cyl  disp  hp drat    wt  qsec vs am gear carb
1 22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
2 21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
3 18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
4 14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4
5 30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2
6 33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1
7 19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2

因此出于某种原因,汽车4,5和7有&#34;碳水化合物&#34;值!= 1

1 个答案:

答案 0 :(得分:0)

也许您的环境中有carb变量掩盖了mtcars$carb。例如:

> attach(mtcars)
> carb <- 1:7
> mtcars[carb == 1,]
                    mpg cyl  disp  hp drat   wt  qsec vs am gear carb
Mazda RX4          21.0   6 160.0 110 3.90 2.62 16.46  0  1    4    4
Merc 240D          24.4   4 146.7  62 3.69 3.19 20.00  1  0    4    2
Cadillac Fleetwood 10.4   8 472.0 205 2.93 5.25 17.98  0  0    3    4
Dodge Challenger   15.5   8 318.0 150 2.76 3.52 16.87  0  0    3    2
Ford Pantera L     15.8   8 351.0 264 4.22 3.17 14.50  0  1    5    4

要确保您真的使用mtcars$carb,请明确说明:

> mtcars[mtcars$carb == 1,]
                mpg cyl  disp  hp drat    wt  qsec vs am gear carb
Datsun 710     22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
Hornet 4 Drive 21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
Valiant        18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
Fiat 128       32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1
Toyota Corolla 33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1
Toyota Corona  21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    1
Fiat X1-9      27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    1

或者您可以先删除carb

> rm(carb)
> mtcars[carb == 1,]
                mpg cyl  disp  hp drat    wt  qsec vs am gear carb
Datsun 710     22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
Hornet 4 Drive 21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
Valiant        18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
Fiat 128       32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1
Toyota Corolla 33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1
Toyota Corona  21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    1
Fiat X1-9      27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    1

我还将mtcars[which(carb == 1),]更改为mtcars[carb == 1,],更简单。

此外,将数据框放在c(...)向量中似乎有点奇怪。您可以这样编写代码:

gc_1 <- mtcars[mtcars$carb == 1,]