如何通过仅读入具有数字数据的数据集的列来执行PCA?

时间:2017-04-06 01:00:23

标签: r pca read.table

我正在尝试使用每月温度的PCA,但我得到的数据集的列数多于月度数据。我如何只阅读月份列来执行PCA?这是我到目前为止所做的一切:

dat_TEMP=read.table("TEMPERATURE.csv",header=TRUE, sep=";", dec=",",row.names=1)
attach(dat_TEMP)
df=data.frame(January,February,March,April,May,June,July,August,September,October,November,December)
dat.pca=prcomp(df,dat_TEMP,center=T,scale=T)

但是当我尝试运行最后一行时,它会给我这个错误: " colMeans中的错误(x,na.rm = TRUE):' x'必须是数字"

任何人都可以帮我吗?只需读出月份列,我需要做什么?

1 个答案:

答案 0 :(得分:2)

您需要确保在提取时,您的数字列不会作为字符或因子传递。如果没有,您可以使用数字列对数据进行子集化,然后运行PCA。

有多种方法可以仅使用数字列对数据进行子集化。

使用dplyr

中的select_if()
library("dplyr")
data.numeric=select_if(data, is.numeric)

使用应用功能

colnums <- sapply(data, is.numeric)
data[ , colnums]

或者

data[, sapply(data, class) == "numeric"]