【问题标题】:Create a column whose outcome is the random match of two other columns in R创建一列,其结果是 R 中其他两列的随机匹配
【发布时间】:2021-08-26 04:28:53
【问题描述】:

我有一个很长的 data.frame,看起来像这样

col1 <- c("a","b","c","d")
col2 <- c("E","F","G","H")
df <- data.frame(col1,col2)
  col1 col2
1    a    E
2    b    F
3    c    G
4    d    H

我想创建列“col3”,其结果是随机组合的乘积 col1 和 col2 中的元素。

例如我想要这样的东西

  col1 col2 col3
1    a    E a-G
2    b    F b-H
3    c    G c-E
4    d    H d-F

非常感谢任何帮助或指导。

【问题讨论】:

    标签: r dplyr data.table tidyr


    【解决方案1】:

    data.table:

    library(data.table)
    setDT(df)
    df[,col3:=paste(col1,'-',sample(col2))][]
    
       col1 col2  col3
    1:    a    E a - F
    2:    b    F b - E
    3:    c    G c - H
    4:    d    H d - G
    

    base R:

    df$col3 <- paste(df$col1,'-',sample(df$col2))
    

    【讨论】:

    • 谢谢 Waldi,这样一个简洁的解决方案
    【解决方案2】:

    一个dplyr 选项可以是:

    df %>%
     mutate(col3 = paste(sample(col1), sample(col2), sep = "-"))
    
      col1 col2 col3
    1    a    E  c-E
    2    b    F  b-H
    3    c    G  a-F
    4    d    H  d-G
    

    【讨论】:

      猜你喜欢
      • 2015-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-19
      • 1970-01-01
      • 2022-07-05
      • 2019-04-02
      • 1970-01-01
      相关资源
      最近更新 更多