我正在尝试使用每月温度的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'必须是数字"
任何人都可以帮我吗?只需读出月份列,我需要做什么?
答案 0 :(得分:2)
您需要确保在提取时,您的数字列不会作为字符或因子传递。如果没有,您可以使用数字列对数据进行子集化,然后运行PCA。
有多种方法可以仅使用数字列对数据进行子集化。
library("dplyr")
data.numeric=select_if(data, is.numeric)
colnums <- sapply(data, is.numeric)
data[ , colnums]
或者
data[, sapply(data, class) == "numeric"]