我有一个名为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
我希望每个单词都可以随机且不同。
任何输入都会受到赞赏。
答案 0 :(得分: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
(默认值)会提供所有值都不同的理想结果。