gpt4 book ai didi

根据 R 中的部分字符串匹配(在另一个数据帧中)替换数据帧中的 NA

转载 作者:行者123 更新时间:2023-12-02 02:11:54 27 4
gpt4 key购买 nike

目标:根据另一个数据帧中的“键”更改一个数据帧中的一列 NA(类似于 VLookUp,但仅在 R 中除外)

这里给出 df1 (为了简单起见,我只有 6 行。我拥有的 key 是 50 行代表 50 个状态):

<表类=“s-表”><标题>索引State_Name缩写 <正文>1加利福尼亚州CA2马里兰州医学博士3纽约纽约4德克萨斯州发送5弗吉尼亚州VA6华盛顿西澳

这里给出 df2 (这只是一个例子。我正在使用的真实数据框有更多行):

<表类=“s-表”><标题>索引状态文章 <正文>1不适用德克萨斯州州长艾伯特签署新的堕胎法案2不适用罢免加州州长纽瑟姆的努力失去了动力3不适用纽约州州长科莫被指控操纵 Covid-19 疗养院数据4不适用Hogan(马里兰州共和党)宣布计划取消全州范围内的新冠限制5不适用由于曼钦的反对,华盛顿不太可能成为州6不适用亚马逊 HQ2 导致弗吉尼亚州北部房价飙升

任务:创建一个循环并读取每个 df2$Article 行中的状态的 R 函数;然后将其与 df1$State_Name 交叉引用,以根据 df2$Article 中的状态将 df2$State 中的 NA 替换为相应的 df1$Abbreviation 键。我知道这很拗口。我不知道如何开始和完成这个难题。硬编码不是一个选项,因为我有数千行这样的真实数据表,并且随着我们向文本抓取添加更多文章而更新。

输出应如下所示:

<表类=“s-表”><标题>索引状态文章 <正文>1发送德克萨斯州州长艾伯特签署新的堕胎法案2CA罢免加州州长纽瑟姆的努力失去了动力3纽约纽约州州长科莫被指控操纵 Covid-19 疗养院数据4医学博士Hogan(马里兰州共和党)宣布计划取消全州范围内的新冠限制5不适用由于曼钦的反对,华盛顿不太可能成为州6VA亚马逊 HQ2 导致弗吉尼亚州北部房价飙升

注意:带有 DC 的第五个条目旨在为 NA。

非常感谢任何指南链接和/或有关如何编码的任何建议。谢谢!

最佳答案

您可以从 State_Name 创建正则表达式模式,并使用 str_extractArticle 中提取它。使用matchdf1中获取相应的Abbreviation名称。

library(stringr)

df2$State <- df1$Abbreviation[match(str_extract(df2$Article,
str_c(df1$State_Name, collapse = '|')), df1$State_Name)]
df2$State
#[1] "TX" "CA" "NY" "MD" NA "VA"

您还可以使用内置的 state.namestate.abb 而不是 df1 来获取州名称和缩写。


这是在 for 循环中执行此操作的方法 -

for(i in seq(nrow(df1))) {
inds <- grep(df1$State_Name[i], df2$Article)
if(length(inds)) df2$State[inds] <- df1$Abbreviation[i]
}
df2

# Index State Article
#1 1 TX Texas governor, Abbott, signs new abortion bill
#2 2 CA Effort to recall California governor Newsome loses steam
#3 3 NY New York governor, Cuomo, accused of manipulating Covid-19 nursing home data
#4 4 MD Hogan (Maryland, R) announces plans to lift statewide Covid restrictions
#5 5 <NA> DC statehood unlikely as Manchin opposes
#6 6 VA Amazon HQ2 causing housing prices to soar in northern Virginia

关于根据 R 中的部分字符串匹配(在另一个数据帧中)替换数据帧中的 NA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67646081/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com