2017-04-03 6 views
-10

を与え、私はデータセットを、次のセグメントにデータsubsetfilterを使用していないフィルタ:私はサブセット条件を適用するとサブセットは、適切な答え

KL <- read.table(text = " 
ID C1 
A 597.69 
B 239.64 
C 601.3 
D 4052.6 
E 73.73 
F 74.06 
G 124 
H 0 
I 0 
J 0 
K 0 
L 122.45 
M 152.88 
N 123.32 
O 354.12", 
stringsAsFactors = FALSE, 
header = TRUE) 

str(KL) 
Classes ‘data.table’ and 'data.frame': 15 obs. of 2 variables: 
$ ID: chr "A" "B" "C" "D" ... 
$ C1: num 597.7 239.6 601.3 4052.6 73.7 ... 

cl4 = subset(KL, C1 > "300.00") 

出力は次のとおりです。

ID C1 
A 597.69 
C 601.30 
D 4052.60 
E 73.73 
F 74.06 
O 354.12 

まだ300未満の数字が表示されるのはなぜですか?

私もfilterを試しましたが、出力は同じです。

+4

は、列 'C1'の数値ではありませんか?クォートなしで 'サブセット(KL、C1> 300.00)であるべきではありませんか? –

+3

'C1'が数値でない場合、あなたがしようとしていることは単なる間違っています。その列を数値的に扱う必要がある場合は、それを数値にします。 –

+0

ポイントをホームにプッシュするには、数字ではなく*テキスト*比較を行います。 "2"は "1"よりも上位の文字であるため(以下の文字にかかわらず)、 "2"> "11" 'を実現してください。これは、あなたの出力の最初の5つがそこにある理由を説明します:「4」から「7」はすべて「3」よりレター順で後で(より高い)、最後のものでは「5」(354.12) 「0」(300.00)よりも大きい。このエラーは、Rデータ型の基本的な教義を再検討する必要があることを示唆しています。 – r2evans

答えて

1

C1の列は数値なので、引用符は使用しないでください。

subset(KL, C1 > 300) 

    ID  C1 
1 A 597.69 
3 C 601.30 
4 D 4052.60 
15 O 354.12 

をしかし、あなたがsubset()は注意して使用する必要があることに注意してください - これは常にあなたはそれがない何を考えないだろう。これを試してみてください。

それはサブセットのため[を使用することをお勧めします:

KL[KL$C1 > 300, ] 
    ID  C1 
1 A 597.69 
3 C 601.30 
4 D 4052.60 
15 O 354.12 
関連する問題