2010-08-11 64 views
2

所以我有一個R中的數據框,它包含整數,NA和單元格內的隨機分組。每個單元只有一種數據類型。我想知道的是如何將所有包含字符串的單元格更改爲NA。任何想法我怎麼能做到這一點?從R中的數據幀中刪除所有字符串?

回答

4

如果你的數據幀(df)實際上是除了NAs和垃圾之外的所有整數,那麼下面的代碼就會轉換它。

df2 <- data.frame(lapply(df, function(x) as.numeric(as.character(x)))) 

您將對強制引入的NAs發出警告,但這只是將所有非數字字符串轉換爲NAs。

下面的代碼也可以工作,更簡潔但運行速度更慢。

df2 <- apply(df, 2, function(x) as.numeric(as.character(x))) 

如果你只是想轉換選定的列,那麼你可以使用一個稍微複雜的命令。首先你需要弄清楚你想要轉換的列。也許你把它們保存爲你希望改變的列的邏輯向量。

df2 <- cbind(df[,!columnsToChange], apply(df[,columnsToChange], 2, function(x) as.numeric(as.character(x))) 

這會把事情搞亂,但它會讓你想要的東西很容易。

3

首先,如果它是data.frame,那麼每列的類型相同。因此,請撥打class(data[,3])來查詢第三列的類別。然後您可以在給定的列上使用as.numeric()等進行轉換。或者,根據您的問題,data[,3] <- NA以防您知道您要替換該欄。

相關問題