我对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
我不明白为什么这些检查会返回错误,我将不胜感激。
答案 0 :(得分:0)
我多次遇到同样的问题,真正的问题通常是如何在R中导入数据。如果你使用的是read.csv或类似的函数,那么有一个名为'colClasses'的属性非常有用。您可以使用此属性告诉R每个列的类型是什么,然后R不会将您的数字列转换为因子。
这里显示了一个简单的例子: