所以我在R中有一个数据框,它包含整数,NA和单元格内随机分组的字符串。每个单元只有一种数据类型。我想知道的是如何将包含字符串的所有单元格更改为NA。知道怎么做吗?
答案 0 :(得分:5)
如果您的数据框(df)实际上是除了NAs和垃圾之外的所有整数,那么以下内容将对其进行转换。
df2 <- data.frame(lapply(df, function(x) as.numeric(as.character(x))))
你会对强制引入的NAs发出警告,但这只是所有那些非数字字符串转变为NA。
以下代码也有效,并且更简洁但运行速度更慢。
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)))
这会使事情变得无序,但它会让你很容易得到你想要的东西。
答案 1 :(得分:3)
首先,如果是data.frame
,则每列的类型相同。所以做class(data[,3])
之类的事情来查询第三列的类。然后,您可以对给定列使用as.numeric()
等进行转换。或者,根据您的问题,data[,3] <- NA
以防您知道要替换该列。