我有答案的一个数据集被称为df
一个问题Q1
df = data.frame(ID = c(1:5), Q1 = c(1,1,3,4,2))
我也有一个向量,其中每个元素是一个字
words = c("good","bad","better","improved","fascinating","improvise")
我的目标
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
我想每一个字被随机分组并不同。
任何输入将高度赞赏。
为此,我们可以使用
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
(默认值)生成这些值给出的所有值是不同的所期望的结果。