代码之家  ›  专栏  ›  技术社区  ›  Varun

R根据条件从向量到数据帧列随机分配不同的值

r
  •  1
  • Varun  · 技术社区  · 7 年前

    df 一个问题的答案 Q1

    df = data.frame(ID = c(1:5), Q1 = c(1,1,3,4,2))
    

    words = c("good","bad","better","improved","fascinating","improvise")
    

    • 如果 Q1=1或Q1=2 然后 words 到新创建的名为 followup

    #If answer to Q1 is 1 or 2, then randomly allocate a word to newly created column "followup"
    #Else leave blank
    df$followup=ifelse(df$Q1==1 | df$Q1==2,sample(words,1),"")
    

    然而,这样做会导致重复上述操作 相同的 为包含1或2的每行随机选择单词。

      ID Q1    followup
    1  1  1 fascinating
    2  2  1 fascinating
    3  3  3            
    4  4  4            
    5  5  5  
    

    不同的 .

    1 回复  |  直到 7 年前
        1
  •  2
  •   Julius Vainora    7 年前

    为此,我们可以使用

    df$followup[df$Q1 %in% 1:2] <- sample(words, sum(df$Q1 %in% 1:2))
    df
    #   ID Q1  followup
    # 1  1  1    better
    # 2  2  1 improvise
    # 3  3  3      <NA>
    # 4  4  4      <NA>
    # 5  5  2       bad
    

    因为我们在一次调用中生成这些值, replace = FALSE 中的(默认值) sample