Случайная последовательность чисел и константа - PullRequest
0 голосов
/ 12 марта 2019

Пример данных

set.seed(1)
data=data.frame("id"=c(sort(rep(1:100,3))),
                "survey"=c(rep(1:3,100)))
data$age = ifelse(data$survey == 1, sample(30:60,100,replace=T),0)

Цель состоит в том, чтобы получить случайное число AGE для каждой строки, где опрос равен 1. Затем я хочу добавить значение 3 для каждого AGE в виде последовательности. Так, например, если возраст при опросе 1 равен 20, то возраст при опросе 2 равен 23, а возраст при опросе 3 равен 26. Я показываю выборку небольших данных ниже

datasmall = data=data.frame("id"=c(sort(rep(1:4,3))),
                            "survey"=c(rep(1:3,4)),
                            "age"=c(50,53,56,52,55,58,44,47,50,39,42,45))

1 Ответ

1 голос
/ 12 марта 2019

Вы можете просто добавить три с помощью соответствующего поднабора.

set.seed(1)
data$age <- NA  # if column does not yet exist
data$age[data$survey == 1] <- sample(30:60, length(data$age[data$survey == 1]), 
                                     replace=TRUE)
data$age[data$survey == 2] <- data$age[data$survey == 1] + 3
data$age[data$survey == 3] <- data$age[data$survey == 2] + 3

head(data)
#   id survey age
# 1  1      1  38
# 2  1      2  41
# 3  1      3  44
# 4  2      1  41
# 5  2      2  44
# 6  2      3  47
...