我无法使用列值

时间:2015-07-02 01:49:56

标签: r

我想根据列的某些特定值来对数据框进行子集化。我的代码就像:

data <- read.csv("file.csv")
data1 <- data[ ,wEEK_NO < 2]
 write.csv(data1, "joda.csv",row.names=FALSE)

但是R给了我这个错误:

Error in `[.data.frame`(data, , wEEK_NO < 2) : object 'wEEK_NO' not found 

该列已存在,但我不知道为什么会收到此错误。 如果有人可以提供帮助,我将感激不尽。

1 个答案:

答案 0 :(得分:1)

您的代码中有三个错误,如下所示

使用mtcars数据集作为示例;使用条件disp < 200

对数据集进行子集化
data(mtcars)

首先,您的指数位置错误,因为评论中注明了C8H10N4O2)。 在对列进行子集化时,您希望选择与约束匹配的行。 您可以通过在行位置data[row, col]

中添加约束来完成此操作
mtcars[mtcars$disp < 200, ]

您还需要告诉R disp的位置。因此,这将导致错误,因为在全局环境中没有名为disp的对象。这似乎是你正在犯的错误。

mtcars[disp < 200, ]
  

[.data.frame中的错误(mtcars,disp&lt; 200,):object&#39; disp&#39;找不到

因此,您还需要在约束mtcars$disp < 200

中传递数据框名称

正如用户227710在评论中指出的那样,R区分大小写,因此如果传递拼写错误的变量,则不会找到它,因为不会返回任何行

mtcars[mtcars$Disp < 200, ]

您拼错了列名。我想它应该是WEEK_NO,有一个资本&#39; W&#39;和首都&#39; O&#39;而不是零。

如果错误仍然存​​在,请查看names(data)以查看拼写是否正确。