我想根据列的某些特定值来对数据框进行子集化。我的代码就像:
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
该列已存在,但我不知道为什么会收到此错误。 如果有人可以提供帮助,我将感激不尽。
答案 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)
以查看拼写是否正确。