数据集让我感到困惑

时间:2019-03-21 16:26:46

标签: r

我正在尝试操纵以下数据集(来自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],它的形式就是“数字”。这个数据集非常令人沮丧(:。

1 个答案:

答案 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)};

而且,我们完成了!