将因子列转换为缺少值的Numeirc

时间:2018-07-19 15:44:51

标签: r

我有一个包含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转换为0s

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

1 个答案:

答案 0 :(得分:0)

您是从csv中读取数据吗?如果是这样,则如果将stringAsFactors = F指定为read.csv函数的参数,则不会假设字符串是因素。

对于数字部分,可以使用plyr colwise函数,而基本上将as.numeric用作函数。

您可以找到有关明智的here的更多信息。希望这会有所帮助!