将列的值提取到字符串中并替换数据框列中的值

流浪汉

除了编程之外,我还迷失了解决此问题的正确方法。我有2个带有市场名称列的数据框。不幸的是,名称在每一列中都有一些字符/符号,例如Albany.Schenectady.Troy = ALBANY,Boston.Manchester = BOSTON。

我想在两个数据框中都标准化市场名称,以便以后可以执行merge操作。

我想分两个步骤解决该问题:1)从两个表中创建唯一市场名称的向量,并使用该向量来创建查找表。看起来像这样:

表1市场>“ Albany.Schenectady.Troy”,“ Albuquerque.Santa.Fe”,“ Atlanta”。

Table2市场>“ SPOKANE”,“ BOSTON”。

我试过了,marketnamesvector <- paste(unique(Table1$Market, sep = "", collapse = ","))但是没有产生想要的输出。

2)将表2中的市场名称更改为表1中的等效市场名称。对于表1中没有的任何市场名称,表2应保留相同的市场名称值。

我知道我可以使用如下所示的循环功能,但我仍然需要一个查找表。

replacefunc <- function (data, oldvalue, newvalue) { newdata <- data for (i in unique(oldvalue)) newdata[data == i] <- newvalue[oldvalue == i] newdata }

表1:此表是90行x 2列,具有90个唯一的市场名称。

                   Market    Leads   Investment         Leads1     Leads2   Leads3
1 Albany.Schenectady.Troy      NA           NA            NA        NA       NA
2    Albuquerque.Santa.Fe      NA           NA            NA        NA       NA
3                 Atlanta      NA           NA            NA        NA       NA
4                  Austin      NA           NA            NA        NA       NA
5               Baltimore      NA           NA            NA        NA       NA

表2:此表是15万行x 20列,具有89个唯一的市场名称。

> df

    Spot.ID    Date Hour     Time Local.Date Broadcast.Week Local.Hour Local.Time  Market
2   13072765 6/30/14    0 12:40 AM 2014-06-29              1         21    9:40 PM SPOKANE
261 13072946 6/30/14    5  5:49 AM 2014-06-30              1          5    5:49 AM  BOSTON
356 13081398 6/30/14   10 10:52 AM 2014-06-30              1          7    7:52 AM SPOKANE
389 13082306 6/30/14   11 11:25 AM 2014-06-30              1          8    8:25 AM SPOKANE
438 13082121 6/30/14    8  8:58 AM 2014-06-30              1          8    8:58 AM  BOSTON
469 13081040 6/30/14    9  9:17 AM 2014-06-30              1          9    9:17 AM  ALBANY
482 13080104 6/30/14   12 12:25 PM 2014-06-30              1          9    9:25 AM SPOKANE
501 13082120 6/30/14    9  9:36 AM 2014-06-30              1          9    9:36 AM  BOSTON
617 13080490 6/30/14   13  1:23 PM 2014-06-30              1         10   10:23 AM SPOKANE
用户名

假设数据在数据帧df1,df2中。目标是将市场名称调整为相同,但目前略有不同。

首先,列出市场,使用以下命令列出df1中的唯一名称,重复df2。

mk1 <- sort(unique(df1$market))
mk2 <- sort(unique(df2$market))
dmk12 <- setdiff(mk1,mk2)
dmk21 <- setdiff(mk2,mk1)

使用dmk12和dmk21识别不同的市场。确定要使用的名称以及它们如何匹配,让我们将df1的“乔治亚州亚特兰大”从df2更改为“亚特兰大”。然后使用

df2[df2$market=="Atlanta","market"] = "Atlanta, GA"

格式是

df_to_change[df_to_change[,"column"]=="old data", "column"] = "new data"

如果您只有90个名称要更正,我将写出90条类似上面的更改行。

调整所有名称后,再次执行sort(unique(df))并使用setdiff两次以确认所有名称相同。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

替换列(字符串)中的值时无法覆盖现有的数据框值

如果匹配特定符号,如何将数据框中的字符串搜索并提取到新列中?

替换字符串中的字母组合,该字符串是pandas数据框中的列值

将字符串部分提取到R中的列

如何从数据框列中的字符串数组中提取特定值?

将数据框中的值重新排列并提取到 R 中的特定列

R:根据列值将数据框中的行号提取到向量中

将Excel列中的字符串数据提取到hashmap中时出现问题

如何将数据框的列值替换为与输入值匹配的空字符串?

将值提取到新列中

替换字符串列中的数据框值,以获取要从另一列替换的值

Pandas - 如何仅将数据框列中的空字符串值强制为 NaN

熊猫在关联的字符串值处将列添加到新数据框中?

将数据框列中的字符串转换为索引值

使用列中的字符串值将行添加到数据框

替换与数据框中的某些字符串匹配的值

用字符串值替换数据框中的NaN

如果列在Pandas中包含任何字符串值,则从数据框中删除值

Pyspark替换Spark数据框列中的字符串

如何在列表中获取数据框名称的子字符串以用此字符串替换列中的所有值?

将字符串与不同数据框中的值匹配

将XML值提取到字符串c#中

如何将字符串值提取到对象字段中

如何用一个公共字符串值替换Pandas数据框列中的多个不同字符串?

从列中的字符串中提取特定值

R中的数据操作:用字符串系统替换列中的值

Pyspark数据框列-转换为列中以字符串表示的十进制值

在python中,如何从任何列中存在特定字符串的数据框中获取行(字符串值)

如何替换列值中的子字符串?