• R语言已解决
  • 求解各位大神:which选取数据行缺少数据是什么原因?

> test1 <- read.csv("1.csv", header=TRUE, fileEncoding="GBK")
> test1
    money rate goal quyu done  done_date tichu
1   23000    1   70 华东    1 2013,02,01   gfh
2  300000    2   70 华东    1 2013,02,02   fgh
3 1200000    1   80 华东   NA 2013,02,03   fgh
4  800000    1   NA 华东   NA 2013,02,04   fgh
5  192000    1   20 华南    1 2013,02,04   gfh
6  855960    1   50 华南    1 2013,02,05   gfh
7  240000    2   75 华北    1 2013,02,08      
8  300000    2   65 皖闽    1 2013,03,01    jj
9  110000    3   29 皖闽    1 2013,03,08      
> test1_1 <- test1[which(money!=110000),]
> test1_1
    money rate goal quyu done  done_date tichu
1   23000    1   70 华东    1 2013,02,01   gfh
2  300000    2   70 华东    1 2013,02,02   fgh
3 1200000    1   80 华东   NA 2013,02,03   fgh
4  800000    1   NA 华东   NA 2013,02,04   fgh
5  192000    1   20 华南    1 2013,02,04   gfh
6  855960    1   50 华南    1 2013,02,05   gfh
> which(test1$money!=110000)
[1] 1 2 3 4 5 6 7 8

lilililili

我的意思是你的test1_1 <- test1[which(money!=110000),] 这行语法有问题,如果要过滤money列,必须写成test1$money, 否则就会报错: 比如下面一样的代码里, cyl 是mtcars列,但环境里找不到cyl就报错了。

你的代码可以执行成功只能说明环境里有另一个叫money的对象,而不是所认为的money列,所以执行结果对不上。

> mtcars[cyl==4,]
Error in `[.data.frame`(mtcars, cyl == 4, ) : object 'cyl' not found

    tctcab 我明白了,确实环境里有一个money,按照您说的试了下就成功了,感谢大佬解答!!!!