dplyr:如何使用mutate函数创建一个组合前缀字符串和值序列的键

Wil*_*car 6 r dataframe dplyr

使用dplyr处理4行data.frame对象时,我想创建一个新的"id"列,其中包含前缀字符串和值序列.

我的期望:

 columnA|columnB|columnC|id
 data    data    data    id-1
 data    data    data    id-2
 data    data    data    id-3
 data    data    data    id-4
Run Code Online (Sandbox Code Playgroud)

我尝试了什么:

 library (dplyr)
 y <- x %>%
        mutate (id =  "id- " & seq(from = 1, to =4, by = 1))
Run Code Online (Sandbox Code Playgroud)

Jaa*_*aap 6

或者:

x %>% mutate(id = paste0('id-', 1:4))
Run Code Online (Sandbox Code Playgroud)

要么:

x %>% mutate(id = paste0('id-', row_number()))
Run Code Online (Sandbox Code Playgroud)

要么:

x %>% mutate(id = paste0('id-', 1:n()))
Run Code Online (Sandbox Code Playgroud)

给你你想要的东西:

  columnA columnB columnC   id
1    data    data    data id-1
2    data    data    data id-2
3    data    data    data id-3
4    data    data    data id-4
Run Code Online (Sandbox Code Playgroud)

当然,这也可以在基础R中轻松完成:

x$id <- paste0('id-', 1:nrow(x))
Run Code Online (Sandbox Code Playgroud)

最好不要使用,row.names因为它们并不总是数字(例如参见row.names(mtcars)).


或使用data.table包:

library(data.table)
setDT(x)[, id := paste0('id-',.I)]
Run Code Online (Sandbox Code Playgroud)


Gop*_*ala 5

您可以通过以下两种方式之一来完成此操作(我认为有多种方式):

1)使用dplyr方法如下:

df %>% mutate(id = paste0('id-', row_number()))
  columnA columnB columnC   id
1    data    data    data id-1
2    data    data    data id-2
3    data    data    data id-3
4    data    data    data id-4
Run Code Online (Sandbox Code Playgroud)

2) 使用简单的基础包分配

df$id <- paste0('id-', row.names(df))
df
  columnA columnB columnC   id
1    data    data    data id-1
2    data    data    data id-2
3    data    data    data id-3
4    data    data    data id-4
Run Code Online (Sandbox Code Playgroud)