У меня есть два dataframes:сравнить data.frames с различным числом строк для
df1<- data.frame(POS=c(1, 2, 3, 4, 5),
A=c(0.2,0,0,0.8,0),
G=c(0,0.3,0,0.2,0.5),
T=c(0.4,0.7,1,0,0.5),
C=c(0.4,0,0,0,0))
df2<- data.frame(POS=c(1, 3, 4, 5, 6),
A=c(0.3,0,0.6,0,0),
G=c(0,0,0.4,0.7,1),
T=c(0.2,1,0,0.3,0),
C=c(0.5,0,0,0,0))
Я хотел бы получить суммированные квадратов разностей для каждого POS
Первое, что нужно две матрицы из те же размеры. Как добавить строку для отсутствующих позиций, заполненных 0?
Как только у меня есть две матрицы, я сделаю (df1-df2)^2, а затем подход рядов.
Подводя итог: Как добавить новую строку, заполненную нулями для недостающих строк в каждом data.frame?
так:
POS A G T C
1 0.2 0.0 0.4 0.4
2 0.0 0.3 0.7 0.0
3 0.0 0.0 1.0 0.0
4 0.8 0.2 0.0 0.0
5 0.0 0.5 0.5 0.0
6 0.0 0.0 0.0 0.0
POS A G T C
1 0.3 0.0 0.2 0.5
2 0.0 0.0 0.0 0.0
3 0.0 0.0 1.0 0.0
4 0.6 0.4 0.0 0.0
5 0.0 0.7 0.3 0.0
6 0.0 1.0 0.0 0.0
Это работает на данный пример, однако я имею трудность, реализующее это в мои реальные данные. Я получаю ошибки, связанные с «BY». 'Ошибка в файле merge.data.table (mass, evo $ POS, all = TRUE, by.x =" POS ", by.y = 1): Нечетный вектор имен столбцов требуется для by.x и by.y.' или 'Ошибка в файле merge.data.table (mass, evo $ POS, all = TRUE, by =" POS "): Элементы, перечисленные в' by', должны быть действительными именами столбцов в x и y ' –
Не могли бы вы объяснить, почему вы выбираете' by = 1'? Мое понимание 'merge()' заключается в использовании используемого имени столбца (т. Е. POS) –