R случайным образом выделяет различные значения из вектора в столбец данных на основе условия - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть набор данных с именем 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 или Q1 = 2 , тогда случайным образом присваивает значение изvector 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 Ответ

0 голосов
/ 04 февраля 2019

Для этого мы можем использовать

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 дает желаемый результат, поскольку все значения различны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...