使用r根据另一列中的值编辑字符串值

强尼

我有关于1990-1999年间已婚并有时改姓的妇女的数据。但是,我并不总是知道确切的名称更改年份,只是我的姓氏在x年和y年之间有所更改。在原始数据中,仅将旧姓氏划掉,并在其旁边写上新姓氏,这在“ crossed_over”列中表示。例如,莎拉·史密斯(Sarah Smith)在1994-1999年的某个时候将她的名字改成了莎拉·德雷珀(Sarah Draper)。

我想要的是每个女人每年都有一个唯一的姓氏,例如Liza Moore,她的名字改为Liza Neville,最好在分配姓氏时使用“ crossed_over”列取平均值。例如,莎拉·史密斯(Sarah Smith)在1997年成为莎拉·德雷珀(Sarah Draper),玛丽·金(Mary King)在1997或1998年成为玛丽·费舍尔(Mary Fisher)。

有人对我如何使用下面的示例实现此建议吗?

library(tidyverse)

id <- rep(1:4, each = 10)
year <- rep(1990:1999, 4)
first_name <- c(rep("molly", 10), rep("sarah", 10), rep("mary", 10), rep("liza", 10))
last_name <- c(rep("johnson", 10), rep("smith", 4), rep("smith draper", 6), rep("king", 5), rep("king fisher", 5), 
               rep("moore", 7), rep("neville", 3))
crossed_over <- c(rep(NA, 10), rep(NA, 4), rep("smith", 6), rep(NA, 5), rep("king", 5), rep(NA, 10))

df <- tibble(id, year, first_name, last_name, crossed_over)

在此处输入图片说明

Ben

这是一种方法。对于这些行crossed_over的名称,设置new_last_namecrossed_over的行上半年的名字,以及之间的区别crossed_over,并last_name为行下半年。

library(tidyverse)
library(stringr)

df %>%
  filter(!is.na(crossed_over)) %>%
  group_by(across(c(-year))) %>%
  mutate(new_last_name = ifelse(row_number() <= n()/2,
                                crossed_over,
                                str_trim(str_remove(last_name, crossed_over)))) %>%
  ungroup() %>%
  right_join(df) %>%
  mutate(new_last_name = coalesce(new_last_name, last_name)) %>%
  arrange(id, year) 

输出量

      id  year first_name last_name    crossed_over new_last_name
   <int> <int> <chr>      <chr>        <chr>        <chr>        
 1     1  1990 molly      johnson      NA           johnson      
 2     1  1991 molly      johnson      NA           johnson      
 3     1  1992 molly      johnson      NA           johnson      
 4     1  1993 molly      johnson      NA           johnson      
 5     1  1994 molly      johnson      NA           johnson      
 6     1  1995 molly      johnson      NA           johnson      
 7     1  1996 molly      johnson      NA           johnson      
 8     1  1997 molly      johnson      NA           johnson      
 9     1  1998 molly      johnson      NA           johnson      
10     1  1999 molly      johnson      NA           johnson      
11     2  1990 sarah      smith        NA           smith        
12     2  1991 sarah      smith        NA           smith        
13     2  1992 sarah      smith        NA           smith        
14     2  1993 sarah      smith        NA           smith        
15     2  1994 sarah      smith draper smith        smith        
16     2  1995 sarah      smith draper smith        smith        
17     2  1996 sarah      smith draper smith        smith        
18     2  1997 sarah      smith draper smith        draper       
19     2  1998 sarah      smith draper smith        draper       
20     2  1999 sarah      smith draper smith        draper       
21     3  1990 mary       king         NA           king         
22     3  1991 mary       king         NA           king         
23     3  1992 mary       king         NA           king         
24     3  1993 mary       king         NA           king         
25     3  1994 mary       king         NA           king         
26     3  1995 mary       king fisher  king         king         
27     3  1996 mary       king fisher  king         king         
28     3  1997 mary       king fisher  king         fisher       
29     3  1998 mary       king fisher  king         fisher       
30     3  1999 mary       king fisher  king         fisher       
31     4  1990 liza       moore        NA           moore        
32     4  1991 liza       moore        NA           moore        
33     4  1992 liza       moore        NA           moore        
34     4  1993 liza       moore        NA           moore        
35     4  1994 liza       moore        NA           moore        
36     4  1995 liza       moore        NA           moore        
37     4  1996 liza       moore        NA           moore        
38     4  1997 liza       neville      NA           neville      
39     4  1998 liza       neville      NA           neville      
40     4  1999 liza       neville      NA           neville 

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用R根据字符串是否在另一列中来更改列的值

来自分类Dev

R编程:根据另一列中的值从拆分字符串中选择元素

来自分类Dev

R:根据另一列中的值从一列中的拆分字符串中检索数据

来自分类Dev

根据另一列中的初始字符串添加列值

来自分类Dev

根据另一列中的值,用字符串替换一列中的NaN

来自分类Dev

根据另一列中的值,将一列中的NaN替换为字符串

来自分类Dev

根据 R 中另一列中的值替换一列中第二次出现的字符串

来自分类Dev

根据另一列(Python Pandas)的值在列中添加一部分字符串

来自分类Dev

如何用另一列中的字符串替换一列中的值?

来自分类Dev

OpenRefine-替换一列中的字符串值而不基于另一列中的值

来自分类Dev

根据R中另一列的值选择列

来自分类Dev

R根据字符串值重新编码一列

来自分类Dev

使用基于另一列的值构建的字符串更新数据库列

来自分类Dev

根据 R 中另一列中的值设置一列的值

来自分类Dev

由另一列中的数值引导的一列中的完整字符串值

来自分类Dev

将字符串替换为根据数据帧中另一列的最大值计算出的值

来自分类Dev

将定界字符串中的重复值与另一列匹配并删除

来自分类Dev

从记录中检索字符串值并插入另一列

来自分类Dev

如何找到子字符串值并复制到 SQL 的另一列中

来自分类Dev

根据R中另一列的最小值获得一列的对应值

来自分类Dev

如何创建一列字符串,包括另一列的值

来自分类Dev

从表中获取与一列中的值匹配并且在另一列中以逗号分隔的字符串存在子字符串的行

来自分类Dev

根据r中的ID从另一列中的一列中查找值

来自分类Dev

如何从R中另一列的子字符串中创建一列?

来自分类Dev

在R中将一列中的字符串提取到另一列中

来自分类Dev

根据另一列中的值减去R中列中的a值

来自分类Dev

如何计算字符串值的频率(从同一列中的几个ID)?[R]

来自分类Dev

根据另一列中包含的字符串在新列中添加值

来自分类Dev

Python:在数据框中,创建一个新列,并使用从另一列的值中切出的字符串

Related 相关文章

  1. 1

    使用R根据字符串是否在另一列中来更改列的值

  2. 2

    R编程:根据另一列中的值从拆分字符串中选择元素

  3. 3

    R:根据另一列中的值从一列中的拆分字符串中检索数据

  4. 4

    根据另一列中的初始字符串添加列值

  5. 5

    根据另一列中的值,用字符串替换一列中的NaN

  6. 6

    根据另一列中的值,将一列中的NaN替换为字符串

  7. 7

    根据 R 中另一列中的值替换一列中第二次出现的字符串

  8. 8

    根据另一列(Python Pandas)的值在列中添加一部分字符串

  9. 9

    如何用另一列中的字符串替换一列中的值?

  10. 10

    OpenRefine-替换一列中的字符串值而不基于另一列中的值

  11. 11

    根据R中另一列的值选择列

  12. 12

    R根据字符串值重新编码一列

  13. 13

    使用基于另一列的值构建的字符串更新数据库列

  14. 14

    根据 R 中另一列中的值设置一列的值

  15. 15

    由另一列中的数值引导的一列中的完整字符串值

  16. 16

    将字符串替换为根据数据帧中另一列的最大值计算出的值

  17. 17

    将定界字符串中的重复值与另一列匹配并删除

  18. 18

    从记录中检索字符串值并插入另一列

  19. 19

    如何找到子字符串值并复制到 SQL 的另一列中

  20. 20

    根据R中另一列的最小值获得一列的对应值

  21. 21

    如何创建一列字符串,包括另一列的值

  22. 22

    从表中获取与一列中的值匹配并且在另一列中以逗号分隔的字符串存在子字符串的行

  23. 23

    根据r中的ID从另一列中的一列中查找值

  24. 24

    如何从R中另一列的子字符串中创建一列?

  25. 25

    在R中将一列中的字符串提取到另一列中

  26. 26

    根据另一列中的值减去R中列中的a值

  27. 27

    如何计算字符串值的频率(从同一列中的几个ID)?[R]

  28. 28

    根据另一列中包含的字符串在新列中添加值

  29. 29

    Python:在数据框中,创建一个新列,并使用从另一列的值中切出的字符串

热门标签

归档