Как создать новый столбец по определенному шаблону?

У меня есть кадр данных df, содержащий значения питания. Мне нужно создать новый столбец диабетика, в котором должно быть да для первых двух строк и нет в третьей строке.

df <- data.frame(nutrition = c(199,200,350,175,226,400)) 

Ожидаемый результат выглядит следующим образом: -

# expect output
diabetic = c("Yes", "Yes", "No", "Yes", "Yes", "No")

person Silent_bliss    schedule 28.06.2020    source источник


Ответы (2)


Вы можете использовать технику повторного использования, чтобы назначить новый столбец.

df$diabetic <- c('Yes', 'Yes', 'No')

df
#  nutrition diabetic
#1       199      Yes
#2       200      Yes
#3       350       No
#4       175      Yes
#5       226      Yes
#6       400       No
person Ronak Shah    schedule 28.06.2020

Мы можем использовать rep для репликации вектора значений, указав length.out как количество строк в наборе данных, и он выполнит репликацию этого вектора.

df$diabetic <- rep(c("Yes", "Yes", "No"), length.out = nrow(df))

Или используя переработку

df  <- transform(df, diabetic = c("Yes", "Yes", "No"))
df
#   nutrition diabetic
#1       199      Yes
#2       200      Yes
#3       350       No
#4       175      Yes
#5       226      Yes
#6       400       No

Или другой вариант - с seq после создания столбца Да, а затем вставки Нет в определенных местах

df$diabetic <- "Yes"
df$diabetic[seq(3, nrow(df), by = 3)] <- "No"

Или используя %% с ifelse

ifelse(seq_len(nrow(df)) %% 3 == 0, "No", "Yes")
#[1] "Yes" "Yes" "No"  "Yes" "Yes" "No" 
person akrun    schedule 28.06.2020