Dplyr:使用唯一名称匿名化多达一百万行的值

问题描述 投票:0回答:1

我有以下数据:

library(dplyr)

d <- tibble(
  region = c('all', 'one', 'eleven', 'six'),
  forename = c('John', 'Jane', 'Rich', 'Clive'),
  surname = c('Smith', 'Jones', 'Smith', 'Jones'))

我想匿名化'forename'和'surname'变量中的值,以便数据看起来像这样。

d <- tibble(
  region = c('all', 'one', 'eleven', 'six'),
  forename = c('forename1', 'forename2', 'forename3', 'forename4'),
  surname = c('surname1', 'surname2', 'surname3', 'surname4'))

我可以手动执行此操作,但是我有一个包含数百万行的df。我想要的是df中的行号与值重命名一致。因此,例如第67行的数据将显示:

d <- tibble(
  region = c('all'),
  forename = c('forename67'),
  surname = c('surname67'))

有人知道如果可能的话,我将如何使用dplyr实现这一目标?

Thannks

r dplyr
1个回答
0
投票

由于每一行都是唯一的用户,因此我们可以将row_number粘贴到列名。

library(dplyr)

d %>%
 mutate(forename = paste0("forename", row_number()), 
        surname = paste0("surname", row_number()))

# A tibble: 4 x 3
#  region forename  surname 
#  <chr>  <chr>     <chr>   
#1 all    forename1 surname1
#2 one    forename2 surname2
#3 eleven forename3 surname3
#4 six    forename4 surname4
© www.soinside.com 2019 - 2024. All rights reserved.