2015-09-30 136 views
1

我擁有以下數據集。它在我想要讀入的數字之前有幾行不想要的字符,以及數據之後的一些不需要的行。我創建了一個子字符串,它將作爲我的第一列,它是純粹的數字。有數據,當讀入數據集時,高於和低於這些轉換爲NA的數字。有沒有一種方法,除了skip和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,] 

但沒有什麼我嘗試工作..我要麼完全關閉或思念的東西。

更新:我能夠用這兩種方法回答下面..但現在的問題是,因爲數字行上面的行包含字符,我的列是因素而不是數字。而不是實際刪除行,我們只是暫時刪除它們。有沒有辦法永久刪除它們,以便我的列將是類數字?

+1

您是否嘗試過'read.csv()'中的'skip'和'nrow'參數? –

+0

哎呦,我說nobs = up top。我打算說跳過和黑暗。我將把這個代碼應用到具有不同行號的多個數據集,所以當應用到不同的集時,skip和nrow將不起作用。 – coderX

+0

如果有一個文件的例子以及你希望如何將它讀入到R中,那將是很好的事情。'na.omit(x)'會起作用嗎? –

回答

1

如果這只是刪除包含NAs的行的情況下,您是否嘗試過使用complete.cases?也許是這樣的:

x2[complete.cases(x2),] 

此外,如果你會提供一個最小的可重複性樣本會很好。

+0

這兩種方法都可以工作,但我忘記了數據集中也有NAs,所以在使用這兩種方法之前,我必須只將那些特定的NAs轉換爲0。謝謝! – coderX