首页 > 解决方案 > 将因子列转换为具有缺失值的 Numeirc

问题描述

我有一个包含 270 列的数据框。有些列应该是数字,但它们被编码为字符串。我正在尝试将几列(R 将它们视为因子)转换为数字。因子列中也存在缺失值。

到目前为止我写的代码:

 temp[, c(19:263)][is.na(temp[, c(19:263)])] <- "0"

 temp[,c(19:263)] <-sapply(temp[,c(19:263)], as.numeric)

运行第一行会给我 16 个警告,并且不会将 NA 转换为 0

Warning messages:
1: In `[<-.factor`(`*tmp*`, thisvar, value = "0") :
  invalid factor level, NA generated
2: In `[<-.factor`(`*tmp*`, thisvar, value = "0") :
  invalid factor level, NA generated
3: In `[<-.factor`(`*tmp*`, thisvar, value = "0") :
  invalid factor level, NA generated
4: In `[<-.factor`(`*tmp*`, thisvar, value = "0") :
  invalid factor level, NA generated
5: In `[<-.factor`(`*tmp*`, thisvar, value = "0") :
  invalid factor level, NA generated
6: In `[<-.factor`(`*tmp*`, thisvar, value = "0") :
  invalid factor level, NA generated
7: In `[<-.factor`(`*tmp*`, thisvar, value = "0") :
  invalid factor level, NA generated
8: In `[<-.factor`(`*tmp*`, thisvar, value = "0") :
  invalid factor level, NA generated
9: In `[<-.factor`(`*tmp*`, thisvar, value = "0") :
  invalid factor level, NA generated
10: In `[<-.factor`(`*tmp*`, thisvar, value = "0") :
  invalid factor level, NA generated
11: In `[<-.factor`(`*tmp*`, thisvar, value = "0") :
  invalid factor level, NA generated
12: In `[<-.factor`(`*tmp*`, thisvar, value = "0") :
  invalid factor level, NA generated
13: In `[<-.factor`(`*tmp*`, thisvar, value = "0") :
  invalid factor level, NA generated
14: In `[<-.factor`(`*tmp*`, thisvar, value = "0") :
  invalid factor level, NA generated
15: In `[<-.factor`(`*tmp*`, thisvar, value = "0") :
  invalid factor level, NA generated
16: In `[<-.factor`(`*tmp*`, thisvar, value = "0") :
  invalid factor level, NA generated

第二个代码将所有 0 转换为 1

标签: r

解决方案


您是否正在从 csv 读取数据?如果是这样,如果您指定 stringsAsFactors = F 作为 read.csv 函数的参数,它不会假定字符串是因子。

至于数字部分,您可以使用 plyr colwise 函数,您基本上使用 as.numeric 作为函数。

您可以在此处找到有关 colwise 的更多信息。希望这可以帮助!


推荐阅读