使用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)
或者:
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)
您可以通过以下两种方式之一来完成此操作(我认为有多种方式):
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)
| 归档时间: |
|
| 查看次数: |
1880 次 |
| 最近记录: |