【问题标题】:Choose randomly a number from two columns rstudio从两列rstudio中随机选择一个数字
【发布时间】:2020-03-31 20:13:38
【问题描述】:

我有这个数据框,我试图创建一个新列,考虑到第一列中的数据和名为“零”的列,我一直在使用 sample(),间隔从 (0,df$首先)但它给了我一个介于 0 和第一列中的数据之间的数字,而不是一个(0)或另一个(例如 9)。

初始数据框:

> df
  first zero 
1     9    0   
2     8    0   
3    16    0  

我想要的是这样的:

> df
  first zero new
1     9    0   9
2     8    0   0
3    16    0  16

非常感谢您的回答或意见。 谢谢!

【问题讨论】:

    标签: r random sample


    【解决方案1】:

    我不确定你是否想要这个

    set.seed(1)
    df$new <- df[cbind(seq(nrow(df)),
                       sample(2,nrow(df),replace = TRUE))]
    

    这样

    > df
      first zero new
    1     9    0   9
    2     8    0   0
    3    16    0  16
    

    数据

    df <- structure(list(first = c(9, 8, 16), zero = c(0, 0, 0)), class = "data.frame", row.names = c(NA, 
    -3L))
    

    【讨论】:

    • @SalmaGuzmán 你是什么意思?对于每一行,new 来自firstzero,对吗?
    • 是的,很抱歉,代码运行良好!我真的很感谢!如果 first 和 zero 不是唯一的两个变量,我是否必须更改某些内容?
    • @SalmaGuzmán 你可以删除set.seed(1) 这一行。此外,如果您的列超过两列,则可以将sample(2,nrow(df),replace = TRUE) 替换为sample(ncol(df),nrow(df),replace = TRUE) 用于一般情况
    • 但是如果你有更多的数字列,你如何在该代码行中指定你应该首先选择列和零?
    • @SalmaGuzmán sample(ncol(df),nrow(df),replace = TRUE) 生成从1ncol(df) 的随机整数,对应列号
    猜你喜欢
    • 1970-01-01
    • 2010-12-10
    • 2012-02-03
    • 2020-10-04
    • 1970-01-01
    • 1970-01-01
    • 2019-03-15
    • 2014-05-15
    • 2021-12-14
    相关资源
    最近更新 更多