merge1 <- within(merge(df1, df2, by=c("ID"),all=F),
AD <- A.x - A.y
BD <- B.x - B.y
CD <- C.x - C.y
DC <- ifelse(df1$D != df2$D | df1$D == "TOT" | df2$D == "TOT", 1, 0)
})[,c("ID","AD","BD","CD","DC")]
Я хочу сравнить статистику идентификаторов по двум наборам данных.Представьте, что каждый д.ф. представляет данные за один год.Это работает точно так, как я хочу, за исключением случаев, когда я пытаюсь добавить переменную «DC» с помощью оператора ifelse.Некоторая информация о наборе данных состоит в том, что они не имеют одинаковую длину, а идентификаторы, которые существовали в df1, могут не существовать в df2, и наоборот.Переменная D в каждом фрейме данных состоит из организаций.Однако я хочу, чтобы новый объединенный df был двоичным файлом того, изменил ли идентификатор организации или нет.Вот почему у меня есть оператор ifelse, где, если D из df1 не совпадает с D из df2, тогда я хочу, чтобы он вывел 1. Также, если D из одного или обоих фреймов данных помечены как TOT, я хочу, чтобы он вывел 1.Я только хочу, чтобы он вывел 0, если df1 $ D = df2 $ D и TOT не назначен идентификатору.Можно ли использовать ifelse (операторы таким образом или я что-то не так делаю? Я немного новичок в R, поэтому я заранее благодарен за помощь.
Edit
Вот код ошибки:
Error in `[<-.data.frame`(`*tmp*`, nl, value = list(TmC = c(1, 1, 0, 1, :
replacement element 1 has 486 rows, need 576
In addition: Warning messages:
1: In if (all.x) all.x <- (nxx <- length(m$x.alone)) > 0L :
the condition has length > 1 and only the first element will be used
2: In if (all.y) all.y <- (nyy <- length(m$y.alone)) > 0L :
the condition has length > 1 and only the first element will be used
3: In is.na(e1) | is.na(e2) :
longer object length is not a multiple of shorter object length
4: In `!=.default`(nbasumadv1617$Tm, nbasumadv1516$Tm) :
longer object length is not a multiple of shorter object length
5: In nbasumadv1617$Tm != nbasumadv1516$Tm | nbasumadv1617$Tm == "TOT" | :
longer object length is not a multiple of shorter object length
Я описал упрощенную версию имен переменных, которые у меня здесь. Она работала так, как я хотел, без четвертой переменной «DC», которая фактически помечена как TmC в моем реальном коде. Я считаю, что этот код на самом деленичего не производит, так как не показывает ничего отличного от того, что я создал без этой четвертой переменной. Первые два сообщения об ошибках по-прежнему отображаются без четвертой переменной "DC", но это нормально. Последние 3 сообщения об ошибках и ошибка несоответствия заменяющего элемента TmC являются новыми.