2015-09-30 3 views
1

У меня есть набор данных ниже. Он содержит несколько строк нежелательных символов перед номерами, которые я хочу прочитать, а также несколько нежелательных строк после данных. Я создал подстроку, которая будет служить моим первым столбцом, который является чисто численным. Есть данные, когда набор читается выше и ниже этих чисел, которые были преобразованы в NA. Есть ли способ, кроме пропустить и nrow, что я могу удалить строки NA и читать только те строки, которые являются числовыми?Только для чтения строк

x<-read.csv("..."), 
    header=FALSE, na.strings="Y") 
y<-substr(x$V1,1,8) 
y<-as.numeric(y) 

x2<-cbind(y,x1) 
x2<-as.data.frame(x2) 

Я попытался:

if (x$y == is.numeric) { 
    print(x) 
} else { 
    print("")} 

Но это явно не так, как все, я получаю ошибки. Я пытался различные комбинации кода выше, а также:

x3<-sapply(x$y,is.numeric) 
x[x3,] 

Но ничего я стараюсь не работает .. Я либо полностью выключен или я что-то отсутствует.

UPDATE: Я смог сделать это с помощью обоих методов, на которые были даны ответы ниже .. но проблема теперь в том, что строки, стоящие над числовыми строками, содержали символы, мои столбцы являются факторами, а не числовыми. Вместо того, чтобы фактически удалять строки, мы просто временно их удаляли. Есть ли способ их окончательного удаления, чтобы мои столбцы были классами?

+1

Вы пробовали аргументы 'skip' и' nrow' в 'read.csv()'? –

+0

Упс, я сказал nobs = вверху. Я хотел сказать пропустить и бросить вызов. Я собираюсь применить этот код к нескольким наборам данных с разными номерами строк, поэтому пропуска и nrow не будут работать при применении к различным наборам. – coderX

+0

Было бы неплохо иметь пример файла и как вы хотите его прочитать в R. Будет ли 'na.omit (x)' работать? –

ответ

1

Если это так, удалите строки, содержащие NA, вы пробовали использовать complete.cases? Возможно, что-то вроде:

x2[complete.cases(x2),] 

Также было бы здорово, если бы вы могли предоставить минимальный воспроизводимый образец.

+0

Оба метода работают, но я забыл, что у меня также есть NA в наборе данных, поэтому я должен преобразовать только те определенные NA-столбцы столбца в 0, прежде чем использовать любой из этих двух. Благодаря! – coderX

Смежные вопросы