使用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))
答案 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