Самостоятельная итерация в R - PullRequest
0 голосов
/ 08 мая 2018

У меня есть столбец в Excel (создан образец данных ниже) с именем Name в формате ниже

Имя (заголовок столбца)
A, Y - B, X
C, Q - W, R
и список можно продолжить и
B, X - A, Y
W, R - C, Q
Т, У - К, М

каждой строке соответствует 20 других столбцов. Мне нужно удалить все строки, которые присутствуют в столбце Имя в обратном формате. Такие как "B, X-A, Y" и "W, R-C, Q" и все соответствующие значения столбцов, но строки "A, Y-B, X" и "C, Q-W, R" должны не удаляется.

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

Я бы сделал это так:

library(tidyr)
library(dplyr)
dat %>% separate(Name, into = c("pair1", "pair2"), sep = " - ", remove = FALSE) %>%
    mutate(p1 = pmin(pair1, pair2), p2 = pmax(pair1, pair2)) %>%
    distinct(p1, p2, .keep_all = TRUE) %>%
    select(-pair1, -pair2, -p1, -p2)
# # A tibble: 6 x 1
#         Name
#        <chr>
# 1  A,Y - B,X
# 2  C,Q - W,R
# 3  E,F - B,T
# 4 E,T - F, B
# 5  Q,P - P,O
# 6  T,U - K,M

Разделите пары, используйте pmin и pmax для их последовательной сортировки и, наконец, дедупликации для отсортированных пар (сохраняя только первое вхождение).

0 голосов
/ 08 мая 2018

Вы можете использовать функцию strsplit, чтобы создать два новых столбца в вашем фрейме данных - один столбец содержимого слева от «-» и один столбец для содержимого справа. Затем вы просто устанавливаете подкадр данных, чтобы сохранить нужные вам строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...