【问题标题】:dplyr: how to use mutate function to make a key combining a prefix string and a sequence of valuesdplyr:如何使用 mutate 函数来创建一个组合前缀字符串和值序列的键
【发布时间】:2016-09-19 10:12:33
【问题描述】:

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

【问题讨论】:

  • x %&gt;% mutate(id = paste0('id-', 1:4)) 应该做的工作
  • @ProcrastinatusMaximus 也许你可以把它变成一个答案?

标签: r dataframe dplyr


【解决方案1】:

要么:

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)]

【讨论】:

    【解决方案2】:

    您可以通过以下两种方式之一(我假设有很多方式):

    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
    

    【讨论】:

      猜你喜欢
      • 2017-06-18
      • 2016-10-16
      • 2019-05-04
      • 1970-01-01
      • 2020-12-27
      • 1970-01-01
      • 2023-01-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多