将数据框的一部分更改为字符,然后更改为R中的数字

时间:2014-02-05 23:43:12

标签: r

我有一个简单的问题。我有一个121列的数据框。第9:121列需要是数字,但是当导入R时,它们是数字和整数以及因子的混合。第1:8列需要保留字符。

我看到有些人使用循环,其他人使用apply()。您认为最优雅的做法是什么?

非常感谢,

保罗M

2 个答案:

答案 0 :(得分:0)

尝试以下操作... apply函数允许您循环数据框的行,列或两者,并应用任何函数,因此为了确保9:121中的所有列都是数字,您可以执行以下内容:

table[,9:121] <- apply(table[,9:121],2, function(x) as.numeric(as.character(x)))
table[,1:8] <- apply(table[,1:8], 2, as.character)

表格是你读入R的数据帧。

简单地说,我在apply函数中指定了我要循环的表 - 在这种情况下我们要对表进行更改的子集,然后我们指定数字2来表示列,最后给出名称as.numeric或as.character函数。然后,赋值运算符会使用正确格式的新值替换表中的旧值。

-EDIT:刚刚更改了第一行,因为我记得如果你从一个因子转换为一个数字,你得到的是因子水平的整数,而不是你认为你得到的因素首先需要是转换为字符,然后转换为数字,这可以通过将as.character包装在.numeric中来实现。

答案 1 :(得分:0)

当您在表格中阅读使用strinsAsFactors=FALSE时,将不会有任何因素。