在R中更改数据帧列的最佳方法

时间:2015-01-29 15:22:36

标签: r dataframe

再一次看似简单的问题,但是......我在R中有一个名为“d1”的小数据框:

     [,1]    [,2]   
[1,] "SHY"   "75000"
[2,] "IGLIX" “25000"

我想要做的就是将第2列中的字符转换为数字。在摆弄了一个小时之后我才能发现作品是:

a <- data.frame(d1[,1])
b <- data.frame(as.numeric(d1[,2]))
cbind(a, b)

给了我:

  d1...1. as.numeric.d1...2..
1     SHY               75000
2   IGLIX               25000

当然有更简单的方法吗?我试过“申请”失败了。

2 个答案:

答案 0 :(得分:2)

如果矩阵中有多个列,您可以一次完成所有操作并同时将列转换为适当的类型。

## set up a matrix
m <- matrix(c("SHY", "75000", "IGLIX", "25000"), 2, byrow=TRUE)
## split by column, convert types, and make data frame
data.frame(
    lapply(split(m, col(m)), type.convert, as.is = TRUE),
    stringsAsFactors = FALSE
)
#      X1    X2
# 1   SHY 75000
# 2 IGLIX 25000

type.convert() 根据需要将字符向量转换为逻辑,整数,数字,复数或因子,因此我们需要使用stringsAsFactors=FALSE再次获取第一列中的字符。

答案 1 :(得分:0)

@ akrun的回答解决了这个问题:

data.frame(Col1= d1[,1], Col2=as.numeric(d1[,2]))