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

时间:2016-05-22 14:27:51

标签: 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

我尝试了什么:

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

2 个答案:

答案 0 :(得分:6)

或者:

x %>% mutate(id = paste0('id-', 1:4))

或:

x %>% mutate(id = paste0('id-', row_number()))

或:

x %>% mutate(id = paste0('id-', 1:n()))

为您提供所需内容:

  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

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

x$id <- paste0('id-', 1:nrow(x))

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

或使用data.table包:

library(data.table)
setDT(x)[, id := paste0('id-',.I)]

答案 1 :(得分:4)

你可以采用以下两种方式之一(我假设的很多方式):

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

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