在R中检查数据是否相等

时间:2014-04-30 10:29:33

标签: r

我对R很新,我在检查某些值是否相等时遇到问题。我有一个数据帧rt(下面),我想检查r $ V8列中的值是否等于606。

        V1    V2                V3 V4       V5  V6 V7   V8   V9
710 256225  RAIN  1853-12-26 00:00  1  DLY3208 900  1  606 1001
712 256225  RAIN  1853-12-27 00:00  1  DLY3208 900  1  606 1001
714 256225  RAIN  1853-12-28 00:00  1  DLY3208 900  1  606 1001
716 256225  RAIN  1853-12-29 00:00  1  DLY3208 900  1  606 1001
718 256225  RAIN  1853-12-30 00:00  1  DLY3208 900  1  606 1001
720 256225  RAIN  1853-12-31 00:00  1  DLY3208 900  1  606 1001

    > typeof(rt$V8)

[1] "integer"

    > mode(rt$V8)
[1] "numeric"

    > class(rt$V8)
[1] "factor"

    > rt$V8
[1]  606  606  606  606  606  606
Levels:  606 1530

测试是否等于606:

    > rt$V8 == 606
[1] FALSE FALSE FALSE FALSE FALSE FALSE

    > as.integer(rt$V8) == as.integer(606)
[1] FALSE FALSE FALSE FALSE FALSE FALSE

我不明白为什么这些检查会返回错误,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

我多次遇到同样的问题,真正的问题通常是如何在R中导入数据。如果你使用的是read.csv或类似的函数,那么有一个名为'colClasses'的属性非常有用。您可以使用此属性告诉R每个列的类型是什么,然后R不会将您的数字列转换为因子。

这里显示了一个简单的例子:

Specifying colClasses in the read.csv