У меня есть файл данных длиной несколько миллионов строк и содержит информацию из многих групп. Ниже приводится сокращенный раздел:Если оператор взвешивания усреднен в R
MARKER GROUP1_A1 GROUP1_A2 GROUP1_FREQ GROUP1_N GROUP2_A1 GROUP2_A2 GROUP2_FREQ GROUP2_N
rs10 A C 0.055 1232 A C 0.055 3221
rs1000 A G 0.208 1232 A G 0.208 3221
rs10000 G C 0.134 1232 C G 0.8624 3221
rs10001 C A 0.229 1232 A C 0.775 3221
Я хотел бы создал взвешенное среднее значение (FREQ) переменной частоты (что само по себе является простым), однако в этом случае некоторые строки являются несогласованные (строки 3 & 4). Если буквы не выстраиваются в линию, тогда частота второй группы должна быть вычтена на 1 до того, как будет рассчитано взвешенное среднее этого маркера.
Я хотел бы настроить простой оператор IF, но я не уверен в синтаксисе такой задачи.
Любое понимание или направление оцениваются!
Ответ отредактирован; Я не понял ваш вопрос в первый раз, когда я его прочитал. – Edward
Привет, Эдвард, спасибо, я не уверен, что это совсем то, что я ищу. Это дало мне ошибку: «Ошибка в' $ <-. Data.frame' ('* tmp *', "GROUP2_FREQ", value = numeric (0)): Замена имеет 0 строк, данные имеют 5 ", поэтому Я не могу быть уверен, но частота должна быть вычтена из 1, ТОЛЬКО, если A1 и A2 между группами не совпадают. Имеет ли это смысл? – mfk534
Он делает. Я вижу, вы хотите вычесть частоту от 1, а не наоборот (что я думал по вашему вопросу). Поэтому мой ответ должен быть изменен, чтобы отразить это ... что касается вашей ошибки, есть ли способ, которым вы можете дать небольшой воспроизводимый образец для проверки? – Edward