2016-04-13 2 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

Спасибо oshun, отметьте свой ответ как ответ и проголосуйте. :) –