数据链接: Data
代码:
ccfsisims <- read.csv(file = "F:/Purdue University/RA_Position/PhD_ResearchandDissert/PhD_Draft/GTAP-CGE/GTAP_NewAggDatabase/NewFiles/GTAP_ConsIndex.csv", header=TRUE, sep=",", na.string="NA", dec=".", strip.white=TRUE)
ccfsirsts <- as.data.frame(ccfsisims)
ccfsirsts[7:25] <- sapply(ccfsirsts[7:25],as.numeric)
ccfsirsts <- droplevels(ccfsirsts)
ccfsirsts <- transform(ccfsirsts,sres=factor(sres,levels=unique(sres)))
ccfsirsts[1:5,]
问题:
因此,如果选中“pSVIPM”列,则数据框“ccfsirsts”中显示的值与.csv文件中实际保存的值不同。上传不同的数据集时出现此问题。
在初始上传中,即“ccfsisims”,一切似乎都要结束。之后问题就出现了。
有关为何会发生这种情况的任何想法?
答案 0 :(得分:3)
当您加载ccfsisims
时str(ccfsisims )
...(养成这样做的习惯)
您会看到pSVIPM
是一个因素。因此,as.numeric
只会按照级别显示的顺序将因子更改为数字。
因为如果您查看自己的csv,那里就会有#DIV/0!
个字符。
亲自尝试:
> length(ccfsisims$pSVIPM[ccfsisims$pSVIPM == "#DIV/0!"])
[1] 350