在对数据框进行子集操作时出现了未定义的列。

85

我有一个数据框,str(data)可以显示关于我的数据框的更多信息,结果如下:

> str(data)
'data.frame':   153 obs. of  6 variables:
$ Ozone  : int  41 36 12 18 NA 28 23 19 8 NA ...
$ Solar.R: int  190 118 149 313 NA NA 299 99 19 194 ...
$ Wind   : num  7.4 8 12.6 11.5 14.3 14.9 8.6 13.8 20.1 8.6 ...
$ Temp   : int  67 72 74 62 56 66 65 59 61 69 ...
$ Month  : int  5 5 5 5 5 5 5 5 5 5 ...
$ Day    : int  1 2 3 4 5 6 7 8 9 10 ...

例如,当我想要对14以上的Ozone数值进行子集操作时,我使用以下代码,但是代码会报错:

>  data[data$Ozone > 14 ]

Error in [.data.frame(data, data$Ozone > 14) : undefined columns selected

错误在于 [.data.frame(data, data$Ozone > 14),选择的列未定义。


13
您缺少了一个逗号。这个错误提示您没有指定要包含在子集中的列。 - Ricardo Saporta
1
换句话说,记住数据框引用需要行和列标识符。您可以选择一个列或所有列,但需要指示您想要什么。 - Scott C Wilson
6
我正在做同样的作业,所以我知道这是一份家庭作业。很弱。 - Brian MacKay
1个回答

163

你想要满足条件为真的行,所以需要一个逗号:

data[data$Ozone > 14, ]

19
为什么这个语法对我来说毫无意义。 - Reinderien
3
这是一种常见的数组索引方式。请查看老派的R文档,它非常擅长教授数据结构。 - Ari B. Friedman
2
我理解所有的东西,除了逗号。 - Reinderien
13
dat[1, 2] 给出第一行第二列的数据。 dat[1, ] 给出第一行的所有数据。 dat[1:5, ] 给出第1-5行的所有列的数据。 - Ari B. Friedman
6
153乘以6得到的是二维的结果。 - Ari B. Friedman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接