Мне нужно условно заменить строки во фрейме данных (x) на строки, выбранные случайным образом из другого фрейма данных (y). Некоторые строки между двумя фреймами данных совпадают, и поэтому фрейм данных x будет содержать строки сповторная информация.Какой базовый код r мне понадобится для достижения этой цели?
Я пишу модель на основе агента в r, где строки можно рассматривать как векторы атрибутов, относящихся к агенту, а столбцы - это типы атрибутов.Чтобы агенты передавали свои атрибуты, им нужно отправлять строки из одного фрейма данных (совокупности) в другой, но в соответствии с правилами условного обучения.Эти правила должны быть: условно заменять значения в строке n во фрейме данных x, если атрибут в столбце 10 для этой строки имеет значение 1 или более, и если вероятность s больше случайно выбранного числа между 0 и 1. Вероятность s сама по себе являетсянастраиваемый параметр, который может принимать любое значение от 0 до 1.
Я попробовал функцию IF
в приведенном ниже коде, но я новичок в r и где-то допустил ошибку, получив это предупреждение:
"пропущенное значение там, где необходимо ИСТИНА / ЛОЖЬ"
Я считаю, что я не указал, что должно происходить со строкой, если условия не выполняются.
Я не могу придумать альтернативного метода достижения своей цели.
Примечание: agent.dat
- это фрейм данных x
, а top_ten_percent
- это фрейм данных y
.
s = 0.7
N = nrow(agent.dat)
copy <- runif(N) #to generate a random probability for each row in agent.dat
for (i in 1:nrow(agent.dat)){
if(agent.dat[,10] >= 1 & copy < s){
agent.dat <- top_ten_percent[sample(nrow(top_ten_percent), 1), ]
}
}
Фрейм данных agent.dat
должен содержать строки, которые заменяются значениями из строк в фрейме данных top_ten_percent
, если случайно выбранное значение копии от 0 до 1 для этой строки меньше значения параметраr s
и если значение для этой строки в столбце 10 равно 1 или более.Для каждой строки мне нужно заменить первые 10 столбцов agent.dat
на первые 10 столбцов top_ten_percent
(исключая столбец 11, т.е. значение копирования).
Помощь в решении этой проблемы очень важна.