2015-04-20 5 views
0

Я прочитал много статей, но не могу показаться, чтобы найти ответ на этотSubset на основе состояния строки

census <- read.csv("data.csv", header=FALSE) 
count <- 0 
for(i in 1 : nrow(census)) { 
    if(!(census[i,2] == '?' || census[i,7] == '?' || census[i,14] == '?')) { 
    # need these values to be in the data frame. 
    count <- count + 1 
    } 
} 

Есть несколько столбцов, которые имеют неизвестные значения, представленные ?. Как я могу получить подмножество кадра данных переписи без ?

+0

Если у вас есть строки («?»), Смешанные с числовыми значениями, это приведет к тому, что тип данных будет иметь фактор/символ, который может быть нежелательным. Если уместно рассматривать эти значения как отсутствующие (NA), попробуйте установить 'read.csv (..., na.strings ="? ")' Для автоматического преобразования в NA и сохранения правильного преобразования типов. – MrFlick

ответ

0

Попробуйте это и дайте мне знать: Даже если одна строка имеет "?", эта строка будет удалена

census[(apply(census =="?", 1, sum)==0), ] 
0

Ниже еще один судебный процесс. ? заменяется на NA, тогда complete.cases() используется для подмножества.

set.seed(1237) 
census <- data.frame(col1 = sample(c('a','?','b'), 10, TRUE), 
        col2 = sample(c('a','?','b', 'c'), 10, TRUE), 
        stringsAsFactors = FALSE) 
census[] <- lapply(census, function(x) { x[x == '?'] <- NA; x}) 
census[complete.cases(census),] 
    col1 col2 
1  a a 
2  b c 
3  a a 
5  a b 
6  b a 
7  b c 
10 b a 
Смежные вопросы