 # Creating a new column with paste; constrict output so the smallest number comes first?

Hi all,

I have the following head of data

``````  OID IN_FID NEAR_FID NEAR_DIST
1   1      1       49  63.10777
2   2      2       63 154.24751
3   3      3        4 383.29095
4   4      4        3 383.29095
5   5      5        4 444.65797
6   6      6      171 365.11103

``````

I would like to combine the IN_FID with NEAR_FID, and I did so by doing

`paste(df\$IN_FID, df\$NEAR_FID, sep ="")`

but, does anyone know if there is a way to arrange it such that the smaller of the two numbers (IN_FID vs NEAR_FID, always comes first?

Thanks!

This should do the trick. Customize as needed.

``````library(tidyverse)
library(glue)

dd <-
tribble(
~IN_FID, ~NEAR_FID,
1, 49,
2, 63,
3, 4,
4, 3,
5, 4,
6, 17
)

map2_chr(dd\$IN_FID, dd\$NEAR_FID,
~glue_collapse(sort(c(.x, .y)), sep = " vs. "))
#>  "1 vs. 49" "2 vs. 63" "3 vs. 4"  "3 vs. 4"  "4 vs. 5"  "6 vs. 17"
``````

Another way of achieving the same thing ... Using the mapply function to find min and max and then combining as desired. Code snippet below might help

``````df1 <- data.frame(in_fid = c(1, 2, 3, 4, 5, 6), near_fid = c(49, 63, 4, 3, 4, 171))

paste(mapply(min, df1\$in_fid, df1\$near_fid),
mapply(max, df1\$in_fid, df1\$near_fid), sep = " ")

``````

Thanks
Arnab P