Я повторил эксперимент (rep1 и rep2). Для каждого репликации у меня есть два столбца (a, sum) и две строки испытуемых предметов, которые принадлежат друг другу (группа AA, BB ...). Для анализа я хотел бы случайным образом назначить собранные данные (a и sum) на rep1 и rep2. Для этого я пытался случайным образом выбирать группы и менять «a» и «sum» rep1 и rep2. Я пытаюсь повторить случайную замену 100 раз, создав 100 наборов данных для анализа.R случайным образом меняет значения между двумя столбцами в dataframe
Я столкнулся с unique(df$groups)
, чтобы указать, что данные каждой группы принадлежат друг другу. В сочетании с sample(unique(df$group), 2)
он случайным образом отображает, скажем, 2 группы. Но я не знаю, как поменять данные реплик этих выбранных групп.
Вот пример данных:
group = c("A", "A", "B", "B", "C", "C")
rep1_a = c(2, 8, 5, 5, 4, 6)
rep1_sum = c(10, 10, 10, 10, 10, 10)
rep2_a = c(3, 8, 4, 5, 5, 6)
rep2_sum = c(11, 11, 9, 9, 11, 11)
df = data.frame(group, rep1_a, rep1_sum, rep2_a, rep2_sum)
# group rep1_a rep1_sum rep2_a rep2_sum
1 A 2 10 3 11
2 A 8 10 8 11
3 B 5 10 4 9
4 B 5 10 5 9
5 C 4 10 5 11
6 C 6 10 6 11
А вот что это должно выглядеть, если из этих 3-й групп, дублированные группы А перепутано:
group rep1_a rep1_sum rep2_a rep2_sum
1 A 3 11 2 10
2 A 8 11 8 10
3 B 5 10 4 9
4 B 5 10 5 9
5 C 4 10 5 11
6 C 6 10 6 11
Привет, Julius, спасибо за аккуратный код! Он делает именно то, что я искал. Однако, чтобы выполнить анализ, мне нужно сохранить столбцы для «новых» реплик в new_df. Есть ли способ добавить столбцы для соответствующих repr_b и reprb_sum? – lampi
Код Юлиуса создает два столбца для рандомизированного репликации 1. Для запуска анализа на обеих репликах я расширил его, чтобы получить соответствующие значения для репликации 2. 'exp_data <- data_frame() для (i в 1: 100) { new_df <- df %>% group_by (group)%>% mutate (x = runif (1))%>% mutate (repr_a = ifelse (x> 0,5, rep1_a, rep2_a), repr_a_sum = ifelse (x> 0,5, rep1_sum , rep2_sum))%>% mutate (repr_b = ifelse (x <0,5, rep_1, rep_2), repr_b_sum = ifelse (x <0,5, rep1_sum, rep2_sum), exp_id = i)%>% select (exp_id, group, repr_a, repr_a_sum, repr_b, repr_b_sum) exp_data <- bind_rows (exp_data, new_df)} ' – lampi