You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于另一列最大值提取列?求提取女性人数最多州名的R代码

解决R中提取女性人数最多州名的问题

我懂你之前为啥代码没生效——你用的max()函数返回的是女性人数的最大值本身,而不是这个最大值对应的行位置!拿这个数值去索引州名列,相当于在找第N行(N是那个超大的人数数字),这肯定不是你想要的结果呀。

下面给你两种靠谱的解决方法,按需选择:

方法一:基础R实现

1. 获取第一个女性人数最多的州名

用which.max()函数找到最大值所在的行索引,再用这个索引提取州名:

# 基础写法
df$State.name[which.max(df$female)]

# 用with简化代码(避免重复写df$)
with(df, State.name[which.max(female)])

2. 获取所有女性人数最多的州名(如果有多个州并列第一)

如果存在多个州的女性人数相同且都是最大值,上面的方法只会返回第一个,这时候可以用条件筛选:

# 筛选出所有女性人数等于最大值的州
df$State.name[df$female == max(df$female)]

方法二:tidyverse(dplyr)实现

如果你习惯用tidyverse的语法,代码会更直观:

library(dplyr)

# 获取第一个女性人数最多的州名
df %>% 
  slice_max(female, n = 1) %>% 
  pull(State.name)

# 获取所有女性人数最多的州名
df %>% 
  filter(female == max(female)) %>% 
  pull(State.name)

举个实际例子测试

假设你的数据集是这样的:

df <- data.frame(
  State.name = c("California", "Texas", "Florida", "New York"),
  female = c(19000000, 15000000, 11000000, 19000000)
)
  • 用which.max()会返回"California"(第一个最大值的州)
  • 用条件筛选会返回c("California", "New York")(所有并列第一的州)

内容的提问来源于stack exchange,提问作者Vinayak Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 11:07:50