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