更改 R 中数据框列的 class 的最佳方法
Best way to change class of column of data frame in R
又是一个看似简单的问题,但是......我在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
确定有更简单的方法吗?我尝试“申请”失败。
@akrun 的回答解决了这个问题:
data.frame(Col1= d1[,1], Col2=as.numeric(d1[,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
来获取字符又是第一列。
又是一个看似简单的问题,但是......我在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
确定有更简单的方法吗?我尝试“申请”失败。
@akrun 的回答解决了这个问题:
data.frame(Col1= d1[,1], Col2=as.numeric(d1[,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
来获取字符又是第一列。