R 中的 USArrests data.frame - 哪个州(行)呈现最小和最大的犯罪率(列)
USArrests data.frame in R - which state (row) presents the smallest and the largest crime rate (column)
我在 R 中使用 USArrests data.frame,我需要查看每种犯罪(谋杀、袭击和强奸)中哪个州的犯罪率最低和最高。
我想我必须计算每项犯罪的最大和最小值,我已经做到了。
which(USArrests$Murder == min(USArrests$Murder))
[1] 34
问题是我无法检索第 34 行中的状态,只能检索整行:
USArrests[34,]
Murder Assault UrbanPop Rape
North Dakota 0.8 45 44 7.3
我刚开始使用 R,请问有人可以帮助我吗?
州名似乎存储为 rowname
。您可以使用 rownames
函数访问 dataframe
的 rownames
。
要查找向量列中具有最小值的元素,您可以使用 which.min
函数。
我们确实有:
> USArrests[which.min(USArrests$Murder), "Murder"]
[1] 0.8
因此,您的命令变为:
> rownames(USArrests)[which.min(USArrests$Murder)]
[1] "North Dakota"
我通常会建议对这样的问题采取不同的方法,但为了方便起见,我将提供以下解决方案,也许稍后会以更深思熟虑的方式回来。
您可以使用 attributes()
函数查看数据帧的特定 'attributes'。
例如:
attributes(USArrests)
将为您提供以下输出。
$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"
所以现在我们知道数据框由 'names'(费用名称)、'row.names'(州名)组成,并且 'class' 是一个数据框。作为 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"
您现在可以应用此逻辑来查找每项犯罪的最高和最低犯罪率的州。例如,对于最大攻击
row.names(USArrests)[which.max(USArrests$Assault)]
给予...
[1] "North Carolina"
我在 R 中使用 USArrests data.frame,我需要查看每种犯罪(谋杀、袭击和强奸)中哪个州的犯罪率最低和最高。 我想我必须计算每项犯罪的最大和最小值,我已经做到了。
which(USArrests$Murder == min(USArrests$Murder)) [1] 34
问题是我无法检索第 34 行中的状态,只能检索整行:
USArrests[34,] Murder Assault UrbanPop Rape North Dakota 0.8 45 44 7.3
我刚开始使用 R,请问有人可以帮助我吗?
州名似乎存储为 rowname
。您可以使用 rownames
函数访问 dataframe
的 rownames
。
要查找向量列中具有最小值的元素,您可以使用 which.min
函数。
我们确实有:
> USArrests[which.min(USArrests$Murder), "Murder"]
[1] 0.8
因此,您的命令变为:
> rownames(USArrests)[which.min(USArrests$Murder)]
[1] "North Dakota"
我通常会建议对这样的问题采取不同的方法,但为了方便起见,我将提供以下解决方案,也许稍后会以更深思熟虑的方式回来。
您可以使用 attributes()
函数查看数据帧的特定 'attributes'。
例如:
attributes(USArrests)
将为您提供以下输出。
$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"
所以现在我们知道数据框由 'names'(费用名称)、'row.names'(州名)组成,并且 'class' 是一个数据框。作为 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"
您现在可以应用此逻辑来查找每项犯罪的最高和最低犯罪率的州。例如,对于最大攻击
row.names(USArrests)[which.max(USArrests$Assault)]
给予...
[1] "North Carolina"