R 如何通过只读取具有数字数据的数据集的列来执行PCA?

R 如何通过只读取具有数字数据的数据集的列来执行PCA?,r,pca,read.table,R,Pca,Read.table,我试图对每月的温度进行主成分分析,但我得到的数据集的列比每月的数据多。如何仅读取月份列以执行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,Novem

我试图对每月的温度进行主成分分析,但我得到的数据集的列比每月的数据多。如何仅读取月份列以执行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”必须是数字


有人能帮我吗?要读取月份列,我需要做什么?

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

有多种方法可以仅使用数字列来子集数据

使用dplyr中的select_if() 使用应用函数
您需要确保在提取过程中,数字列不会作为字符或因子传递。如果没有,则可以使用数字列对数据进行子集,然后运行PCA

有多种方法可以仅使用数字列来子集数据

使用dplyr中的select_if() 使用应用函数
是否将两个data.frames传递给
prcomp
?我认为您应该去掉
dat\u TEMP
参数。另请查看
sapply(df,class)
以查看
df
中所有列的类。如果它们并非都是数字,并且您希望它们都是数字,那么在导入过程中可能出现了问题。您是否将两个data.frames传递给
prcomp
?我认为您应该去掉
dat\u TEMP
参数。另请查看
sapply(df,class)
以查看
df
中所有列的类。如果它们不都是数字,并且您希望它们都是数字,那么在导入过程中可能出现了问题。
library("dplyr")
data.numeric=select_if(data, is.numeric)
colnums <- sapply(data, is.numeric)
data[ , colnums]
data[, sapply(data, class) == "numeric"]