USArrests data.frame in R-哪个州(行)表示最小和最大的犯罪率(列)

USArrests data.frame in R-哪个州(行)表示最小和最大的犯罪率(列),r,dataframe,max,min,rowname,R,Dataframe,Max,Min,Rowname,我使用的是R中的USArrests data.frame,我需要查看每个犯罪(谋杀、袭击和强奸)哪个州的犯罪率最小,哪个州的犯罪率最大。 我想我必须计算每个犯罪的最大值和最小值,我已经做到了 其中(USARests$谋杀==min(USARests$谋杀)) [1] 三十四 问题是我无法检索第34行中的状态,而只能检索整行: 美国研究院[34,] 谋杀、袭击和强奸 北达科他州0.845447.3 我刚开始使用R,有人能帮我吗?看来状态名存储为行名。您可以使用rownames功能访问datafra

我使用的是R中的USArrests data.frame,我需要查看每个犯罪(谋杀、袭击和强奸)哪个州的犯罪率最小,哪个州的犯罪率最大。 我想我必须计算每个犯罪的最大值和最小值,我已经做到了

其中(USARests$谋杀==min(USARests$谋杀)) [1] 三十四

问题是我无法检索第34行中的状态,而只能检索整行:

美国研究院[34,] 谋杀、袭击和强奸 北达科他州0.845447.3


我刚开始使用R,有人能帮我吗?

看来状态名存储为
行名
。您可以使用
rownames
功能访问
dataframe
rownames

要查找向量列中具有最低值的元素,可以使用
which.min
函数

我们确实:

> USArrests[which.min(USArrests$Murder), "Murder"]
[1] 0.8
因此,您的命令变为:

> rownames(USArrests)[which.min(USArrests$Murder)]
[1] "North Dakota"

我通常会建议对这样的问题采取不同的方法,但为了方便起见,我将提供以下解决方案,也许稍后会以一种更为深思熟虑的方式回来

您可以使用
attributes()
函数查看数据帧的特定“属性”

例如:

将为您提供以下输出

$names
[1] "Murder"   "Assault"  "UrbanPop" "Rape"    

$class
[1] "data.frame"

$row.names
 [1] "Alabama"        "Alaska"         "Arizona"        "Arkansas"       "California"     "Colorado"      
 [7] "Connecticut"    "Delaware"       "Florida"        "Georgia"        "Hawaii"         "Idaho"         
[13] "Illinois"       "Indiana"        "Iowa"           "Kansas"         "Kentucky"       "Louisiana"     
[19] "Maine"          "Maryland"       "Massachusetts"  "Michigan"       "Minnesota"      "Mississippi"   
[25] "Missouri"       "Montana"        "Nebraska"       "Nevada"         "New Hampshire"  "New Jersey"    
[31] "New Mexico"     "New York"       "North Carolina" "North Dakota"   "Ohio"           "Oklahoma"      
[37] "Oregon"         "Pennsylvania"   "Rhode Island"   "South Carolina" "South Dakota"   "Tennessee"     
[43] "Texas"          "Utah"           "Vermont"        "Virginia"       "Washington"     "West Virginia" 
[49] "Wisconsin"      "Wyoming"     
因此,现在我们知道数据帧由“名称”(电荷名称)、“行.名称”(状态名称)组成,“类”是一个数据帧。作为R的新手,需要注意的是,在上面的结果中,行id只针对每一新行的第一项给出。在最后一步中,这将更有意义

利用这些知识,我们可以通过执行以下操作,使用属性仅查找状态:

attributes(USArrests)$row.names
要查找列表中您已标识为北达科他州的第34个州,我们只需给出该州的行id,如下所示

attributes(USArrests)$row.names[34]
这将给你

[1] "North Dakota"
同样,这可能不是最优雅的方法,但它适用于您的场景

希望这有助于和快乐的编码

编辑

正如我提到的,通常有一种更优雅、更高效的做事方式。这是实现你目标的另一种方式

row.names(USArrests)[which.min(USArrests$Murder)]
您可能会立即看到这里发生了什么,但本质上,我们要求的是与谋杀指控最低值相关的行名称。这又给了

[1] "North Dakota"
现在,您可以应用此逻辑来查找具有每个犯罪的最大和最小犯罪率的州。例如,对于max攻击

row.names(USArrests)[which.max(USArrests$Assault)]
给予

[1] "North Carolina"

非常感谢。这是非常有帮助的,是的,第二种方法看起来更优雅!伟大的不客气,丽塔!如果这解决了你的问题,请考虑将我的回答标记为正确答案。应该在旁边的某个地方打个勾。丽塔,请检查你是否已将正确答案标记为正确答案。这将帮助遇到相同问题的其他人找到正确的解决方案。这并没有回答OP的问题,即如何检索具有最大/最小犯罪率的状态。这个答案只找到了最低犯罪率,OP说他们已经达到了。真的很顺利,弗雷德。
[1] "North Carolina"