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

如何在R中批量调用Name-Prism API为数据框添加种族得分列

批量调用Name-Prism API获取种族得分的R解决方案

步骤1:加载所需R包

先安装并加载必要工具包:

install.packages(c("httr", "dplyr", "purrr", "readr"))
library(httr)
library(dplyr)
library(purrr)
library(readr)

步骤2:准备你的数据

假设你的数据框名为name_df,包含Name列:

# 示例数据框(替换为你的实际数据)
name_df <- data.frame(
  Name = c("Barack Obama", "Xijin Ping", "Bladimir Putin", "John Smith")
)

步骤3:定义API调用函数

编写函数处理单个姓名的请求,解析返回结果并提取最高种族得分(可根据需求修改为提取特定种族得分):

get_ethnicity_score <- function(name, api_token) {
  # URL编码姓名,处理空格等特殊字符
  encoded_name <- URLencode(name, reserved = TRUE)
  # 构造API请求地址
  api_url <- paste0("http://www.name-prism.com/api_token/nat/csv/", api_token, "/", encoded_name)
  
  # 发送请求并处理错误
  tryCatch({
    response <- GET(api_url)
    # 检查请求是否成功
    stop_for_status(response)
    # 解析返回的CSV数据
    result_csv <- read_csv(content(response, as = "text"), show_col_types = FALSE)
    # 提取最高得分(请根据API实际返回的列名调整,比如得分列可能叫score)
    max_score <- max(result_csv$score, na.rm = TRUE)
    return(max_score)
  }, error = function(e) {
    # 请求失败时返回NA并提示错误
    message(paste("处理", name, "时出错:", e$message))
    return(NA)
  })
}

步骤4:批量处理姓名并添加得分列

用purrr批量处理所有姓名,必须添加延迟避免API限流(Name-Prism对请求频率有限制,这里设置1秒间隔,可按需调整):

# 替换为你的API令牌
API_TOKEN <- "your_api_token_here"

# 批量获取得分并添加到原数据框
name_df$Ethnicity_Score <- map_dbl(name_df$Name, ~{
  Sys.sleep(1)  # 每次请求间隔1秒
  get_ethnicity_score(.x, API_TOKEN)
})

最终结果

处理完成后,数据框会新增Ethnicity_Score列,格式如下:

Name Ethnicity_Score
1   Barack Obama           0.781
2     Xijin Ping           0.812
3 Bladimir Putin           0.912
4    John Smith           0.777

注意事项

  • API限流:请求量较大时,建议延长间隔时间,避免被封禁IP。
  • 错误处理:函数内置tryCatch,请求失败的姓名会返回NA,可后续筛选重试。
  • 列名适配:请根据API实际返回的CSV列名调整代码中的列名(比如得分列若不是score,需对应修改)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 11:20:27