我正在尝试操纵以下数据集(来自FBI犯罪统计)https://www.ucrdatatool.gov/Search/Crime/Local/RunCrimeJurisbyJuris.cfm。格式为.CSV。使用R下载后,我使用了以下命令
a=read.csv("RunCrimeJurisbyJuris.csv",header=FALSE);
然后,我们删除顶部的内容,最后删除n / a。
b=a[-c(1:5),-c(24,25)];
从外观上看,哪个看起来合适。例如,b [1,]会产生第一行的列表,但应该如此。但是,当我尝试命名标题时,
names(b)=b[1,],
产生 I THINK 是级别列表。为什么要这样做?
我得到了一些非常令人困惑的东西。我认为这是因为当我查看b [1,1]时,我得到的不是
Year
41 Levels: ...
此外,使用view(b)可以产生类似于excel的表示形式,看起来像普通数据集。自从我使用R已有一段时间了,如果我没记错的话,我以前从未见过这种行为。另外,我认为这些“级别”是错误的根源。我在做什么错了?
以上已解决
现在,当我拉成员,例如b [“ Population”]时,每个元素看起来都像这样(数字)“”。有没有办法删除这些“”,如果我拉一个特定的数字,比如说b [3,2],它的形式就是“数字”。这个数据集非常令人沮丧(:。
答案 0 :(得分:0)
解决方案涉及以下内容:
首先,要删除“级别”部分,我们不需要将字符串作为因素。因此,我们添加以下命令:
read.csv("file.csv",header=FALSE,stringsAsFactors=FALSE)
然后,我们遇到的问题是所有东西都是字符串,甚至是数字(至少我是这样做的)。我使用以下循环修复了此问题,并sapply()
for(i in 1:ncol(test2)){test2[,i]=sapply(test2[,i],as.numeric)};
使用as.numeric
将字符串转换为数字。然后,我们可以使用从Replacing Missing Values with Column Mean获得的循环替换NA,这只会影响检验,例如统计显着性或置信区间的产生。这是该问题所述的循环,很容易理解:
for(i in 1:ncol(test2)){ test2[is.na(test2[,i]),i]=mean(test2[,i],na.rm=TRUE)};
而且,我们完成了!