Я работаю над столбцом Gender
, в котором в качестве значений используются коэффициенты, а именно: «Мужской», «Женский» и «Общий». «Итого» не требуется, поэтому я решил заменить половину значений «Итого» мужчинами, а остальные - женщинами. Столбец простой, и я преобразовал все коэффициенты в цифры через основную строку as.numeric(factor())
:
Gender NewGender
Male 1
Female 2
Total 3
Total 3
.
.
Female 2
Теперь следующим шагом является замена всех 3 с 1 и 2, но в случайном порядке .
Всего имеется 55 399 наблюдений, из которых 22 057 соответствуют трем в столбце NewGender
. Я попробовал какой-то уникальный набор команд, из которых я считаю ближайший:
# Experiment with 50 rows
for (row in data$NewGender[sample(which(data$NewGender, 50), ]) {
if (row == 3) {row <- 1; row <- row + 1}
}
Это генерирует предупреждения, хотя и не заменяет тройки. Я мог бы использовать это:
data$NewGender[data$NewGender == 3] <- 1
Но я не могу вложить его методом sample()
. То, что я хочу, это Newgender
, содержащий только единицы и двойки, при этом половина всех тройок заменяется на единицу, а остальная половина должна быть полностью рандомизирована. Есть хорошие предложения? Заранее спасибо.