2016-04-13 7 views
0

符号,がデータフレームをフィルタリングするときに意味することについて混乱しているビット、具体的にはこのコード行df2 <- df[df$c6 <= 1 & df$c4 > 200,]。私はいくつかのオンライン文書を見つけようとしましたが、失敗しました。私は,は元のデータフレームの他の列にフィルターがないことを意味します。フィルタを実行するときに誰でも,が意味することをコメントできれば、それは素晴らしいことになります。のデータフレームフィルタR

私は、R、データと結果に

コード

df <- read.csv('~/Downloads/sample.csv', sep=',', header=F, stringsAsFactors=FALSE) 
names(df) <- c('c1', 'c2', 'c3', 'c4', 'c5') 
df$c5 <- as.numeric(df$c5) 
df$c6 <- df$c5 *1000/df$c4 
table(df$c2) 
df2 <- df[df$c6 <= 1 & df$c4 > 200,] 

データ

10321,t1,1,240,0 
16123,t1,20,4492,0 
19123,t2,3.1,175,0 
35321,t1,3,2304,4.608 

結果

を私のコードを投稿
> df 
    c1 c2 c3 c4 c5 c6 
1 10321 t1 1.0 240 0.000 0 
2 16123 t1 20.0 4492 0.000 0 
3 19123 t2 3.1 175 0.000 0 
4 35321 t1 3.0 2304 4.608 2 
> df2 <- df[df$c6 <= 1 & df$c4 > 200,] 
> df2 
    c1 c2 c3 c4 c5 c6 
1 10321 t1 1 240 0 0 
2 16123 t1 20 4492 0 0 
+4

'ヘルプ(「[」)'の例を見て、おそらく、で開始する:ここで

は、行と列の参照のいくつかの図です。 –

+0

@ JoshO'Brien、ありがとうと投票して、私は '[' 'に助けをすることさえできるのか分からない。 :) –

+1

確かに。私はそれが明白な 'help()'クエリではないことを知っており、それがあなたにとって有用かもしれないと考えました。 –

答えて

3

Data.framesは行または列で参照できます。形式はdf[row, column]です。行を選択すると、その行からすべての列が返されます。これはあなたの例を使って何をしているのかです。つまり、行df[ filter condition , ]をフィルタリングしています。

df[3] #column 3 
#1 1.0 
#2 20.0 
#3 3.1 
#4 3.0 
class(df[3]) 
#[1] "data.frame" 

df[,3] #column 3 
#[1] 1.0 20.0 3.1 3.0 
class(df[,3]) 
#[1] "numeric" 

df[3,] #row 3 
#c1 c2 c3 c4 c5 c6 
#3 19123 t2 3.1 175 0 0 
class(df[3,]) 
#[1] "data.frame" 

df$c6 <= 1 & df$c4 > 200 
#[1] TRUE TRUE FALSE FALSE #Only rows 1 and 2 meet the conditions 
all(df[df$c6 <= 1 & df$c4 > 200, ] == df[ c(TRUE, TRUE, FALSE, FALSE),]) 
#[1] TRUE 
+0

お返事ありがとうございました。 :) –