#r
Вопрос:
Из фрейма данных в R, который имеет координаты Xy (см. Пример) Я хотел бы добавить в строки (final X и final Y), чтобы показать все возможные попарные сравнения между ними.
dt = data.frame(X = seq(1, 5, by=1), Y = seq(1, 5, by=1))
Это конечная цель, но должна быть строка для каждой возможной комбинации x, y и final_x, final_y
Комментарии:
1. Почему у вас нет координат x и y в отдельных столбцах как числовых, вместо того, чтобы объединять их в виде строки?
2. Как я думал, было бы проще работать с 1 столбцом вместо 2? Однако может легко иметь две отдельные колонки
3. Определенно проще иметь две координаты в отдельных столбцах, как числовые.
4. Согласитесь, что проще иметь x и y в отдельных столбцах, я бы рекомендовал просмотреть уроки по аккуратным данным .
5. Спасибо — я отредактировал выше
Ответ №1:
Вы можете использовать expand.grid
:
eg <- expand.grid(final_Y = 1:5, Y = 1:5, final_X = 1:5, X = 1:5)[,c(4,2,3,1)]
head(eg, n=20)
# X Y final_X final_Y
# 1 1 1 1 1
# 2 1 1 1 2
# 3 1 1 1 3
# 4 1 1 1 4
# 5 1 1 1 5
# 6 1 2 1 1
# 7 1 2 1 2
# 8 1 2 1 3
# 9 1 2 1 4
# 10 1 2 1 5
# 11 1 3 1 1
# 12 1 3 1 2
# 13 1 3 1 3
# 14 1 3 1 4
# 15 1 3 1 5
# 16 1 4 1 1
# 17 1 4 1 2
# 18 1 4 1 3
# 19 1 4 1 4
# 20 1 4 1 5
nrow(eg)
# [1] 625
Я определил столбцы не по порядку и переупорядочил их просто в соответствии с порядком вашего ожидаемого вывода. Можно было бы легко сделать expand.grid(X=,Y=,final_X=,final_Y=)
и оставить, [,c(...)]
и эффективные результаты были бы такими же, но в другом порядке строк.
Комментарии:
1. Fleaf, это делает то, что вы ожидаете?