将因子数据框更改为大矩阵R.

时间:2015-08-19 09:14:18

标签: r factors

我有一个大数据框(22k行,400列),它是使用csv文件中的read.csv生成的。似乎每列都是一个因子,所有行值都是该因子的水平。

我现在想做一些分析(比如PCA),但我不能使用它,除非它是一个矩阵,但即使我像矩阵一样尝试它,我得到的只是

> prcomp(as.matrix(my_data))
Error in colMeans(x, na.rm = TRUE) : 'x' must be numeric

有没有办法将这个数据框的因子转换为简单的大矩阵?

我是R的新人,所以原谅所有(可能是可怕的)错误。

由于

1 个答案:

答案 0 :(得分:0)

你可以这样做:

df<-data.frame(a=as.factor(c(1,2,3)), b=as.factor(c(2,3,4)))
m<-apply(apply(df, 1, as.character), 1, as.numeric)

apply 在给定的data.frame上使用方法。重要的是不要先将它转换为字符,否则它将被转换为因子的内部数字表示。

要添加列名,请执行以下操作:

m<-m[-1,] # removes the first 'empty' row
colnames(m)<-c("a", "b") # replace the right hand side with your desired column names, e.g. the first row of your data.frame

还有一个提示。您可能从文件中读取了data.frame,当您设置参数header = TRUE时,第一行将不是标题,但data.frame的列名将是正确的。

相关问题