[R随机地从载体到数据帧列基于条件分配不同的值

问题描述 投票:1回答:1

我有答案的一个数据集被称为df一个问题Q1

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

我也有一个向量,其中每个元素是一个字

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

我的目标

  • IF Q1 = 1个或Q 1 = 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  

我想每一个字被随机分组​​并不同。

任何输入将高度赞赏。

r
1个回答
1
投票

为此,我们可以使用

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(默认值)生成这些值给出的所有值是不同的所期望的结果。

© www.soinside.com 2019 - 2024. All rights reserved.