Вот два варианта dplyr
.Оба включают сортировку значений двух областей для каждой пары (x, y).Первый использует mutate
для вставки отсортированных значений, сделанных с rowwise
.Второй использует gather
, чтобы создать один столбец областей, упорядочить их по парам (x, y), а затем summarise
s, вставив их вместе.
library(tidyverse)
region.1 <- c("SE", "SE", "SW", "S", "SW")
region.2 <- c("SW", "S", "SE", "SE", "SE")
x <- c(1,2,3,4,5)
y <- c(1,3,2,4,1)
df <- data.frame(x,y,region.1,region.2)
df_interact1 <- df %>%
mutate_if(is.factor, as.character) %>%
rowwise() %>%
mutate(interact = sort(c(region.1, region.2)) %>% paste(., collapse = ".")) %>%
ungroup()
df_interact1
#> # A tibble: 5 x 5
#> x y region.1 region.2 interact
#> <dbl> <dbl> <chr> <chr> <chr>
#> 1 1 1 SE SW SE.SW
#> 2 2 3 SE S S.SE
#> 3 3 2 SW SE SE.SW
#> 4 4 4 S SE S.SE
#> 5 5 1 SW SE SE.SW
ggplot(df_interact1, aes(x = x, y = y, color = interact)) +
geom_point(size = 5)
df_interact2 <- df %>%
gather(key = region, value = value, region.1, region.2) %>%
group_by(x, y) %>%
arrange(value) %>%
summarise(interact = paste(min(value), max(value), sep = ".")) %>%
ungroup()
df_interact2
#> # A tibble: 5 x 3
#> x y interact
#> <dbl> <dbl> <chr>
#> 1 1 1 SE.SW
#> 2 2 3 S.SE
#> 3 3 2 SE.SW
#> 4 4 4 S.SE
#> 5 5 1 SE.SW
ggplot(df_interact2, aes(x = x, y = y, color = interact)) +
geom_point(size = 5)
Создано в 2018-05-22 с помощью представительного пакета (v0.2.0).