[英]R - NAs turn columns into character class (should be integer/ numeric)
我导入了一个包含大量缺失值或 N/A、NA 的庞大数据集。
这就是我导入数据的方式:
Databsp<-read.csv("C:/Users/adminfor/Desktop/Neuer Ordner/Pseudonymized-Genet-Treatment-Summary-20220201120538.csv", na.strings=TRUE)
接下来,我将所有 NA 或 N/As 转换为使用以下代码:
a <- Databsp %>% replace_with_na_all(condition = ~.x %in% common_na_strings)
现在我的问题是:为什么列只包含来自 class “字符”而不是“整数/数字”的数字和 NA。 我尝试了几个代码,但似乎没有任何帮助......
您不会更改列类。 导入数据时,首先设置列类,您无需更改它们。 如果 CSV 文件中的一列在您导入时只有数字和NA
值,则它将是数字。 但是如果它有字符串(包括你还没有告诉 R 是 NA 等效的字符串,比如"N/A"
),那么read.csv
必须将它们读取为character
ZA2F2ED4F8EBC2CBB4C21A29DC40AB6 因为它们不是数字。 稍后,您将这些 NA 等效值替换为实际NA
,但这仅替换值,它不会更改列的 class 。
糟糕的解决方案是修补它。 替换 NA 值后添加一个额外步骤,您可以使用type.convert()
function 重新评估列并根据需要转换它们, a <- type.convert(a)
。
更好的解决方案是在读取数据时为read.csv
提供 NA 等效字符串列表。 这就是na.strings
参数应该是什么。 从?read.csv
na.strings
要解释为NA
值的字符串的字符向量。
因此,将您的导入行更改为
Databsp <- read.csv(
"C:/Users/adminfor/Desktop/Neuer Ordner/Pseudonymized-Genet-Treatment-Summary-20220201120538.csv",
na.strings = common_na_strings
)
然后,当您读入这些列时,它们应该被适当地分类,并且您可以跳过replace_with_na_all
步骤,因为它已经被处理了。 相关地,您当前的na.strings = TRUE
什么都不做,因为TRUE
不是字符向量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.