Status
lines of R code: 83, lines of test code: 27
Version
0.3.3 ( 2020-09-11 18:11:12 )
Description
Tool collection for common and not so common data science use cases. This includes custom made algorithms for data management as well as value calculations that are hard to find elsewhere because of their specificity but would be a waste to get lost nonetheless. Currently available functionality: find sub-graphs in an edge list data.frame, find mode or modes in a vector of values, extract (a) specific regular expression group(s), generate ISO time stamps that play well with file names, or generate URL parameter lists by expanding value combinations.
License
GPL (>= 2)
Peter Meissner [aut, cre]
Citation
BibTex for citing
@Manual{,
title = {dsmisc: Data Science Box of Pandora Miscellaneous},
author = {Peter Meissner},
year = {2020},
note = {R package version 0.3.3},
}
Installation
Stable version from CRAN:
starting up …
find isolated graphs / networks
A graph described by an edgelist with two distinct subgraphs.
## node_1 node_2
## 1 1 2
## 2 2 3
## 3 3 4
## 4 4 5
## 5 5 6
## 6 10 7
## 7 9 7
## 8 8 7
Finding subgraphs and grouping them together via subgraph id.
edges_df$subgraph_id <-
graphs_find_subgraphs(
id_1 = edges_df$node_1,
id_2 = edges_df$node_2,
verbose = 0
)
edges_df
## node_1 node_2 subgraph_id
## 1 1 2 1
## 2 2 3 1
## 3 3 4 1
## 4 4 5 1
## 5 5 6 1
## 6 10 7 2
## 7 9 7 2
## 8 8 7 2
speedtest for large graph
edges_df <-
data.frame(
node_1 = sample(x = 1:10000, size = 10^5, replace = TRUE),
node_2 = sample(x = 1:10000, size = 10^5, replace = TRUE)
)
system.time({
edges_df$subgraph_id <-
graphs_find_subgraphs(
id_1 = edges_df$node_1,
id_2 = edges_df$node_2,
verbose = 0
)
})
## user system elapsed
## 2.96 0.01 3.02
Calculating the modus from a collection of values
## Warning in stats_mode(1:10): modus : multimodal but only one value returned (use warn=FALSE to turn this off)
## [1] 1
## [1] 1 2 3 4 5 6 7 8 9 10
{stringr} / {stringi} packages are cool … but can they do this (actually they can, of cause but with a little more work and cognitive load needed, e.g.: stringr::str_match(strings, "([\\w])_(?:\\d+)")[, 2]
)?
Extract specific RegEx groups
strings <- paste(LETTERS, seq_along(LETTERS), sep = "_")
# whole pattern
str_group_extract(strings, "([\\w])_(\\d+)")
## [1] "A_1" "B_2" "C_3" "D_4" "E_5" "F_6" "G_7" "H_8" "I_9" "J_10" "K_11" "L_12" "M_13" "N_14" "O_15"
## [16] "P_16" "Q_17" "R_18" "S_19" "T_20" "U_21" "V_22" "W_23" "X_24" "Y_25" "Z_26"
## [1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z"
## [1] "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "12" "13" "14" "15" "16" "17" "18" "19" "20" "21"
## [22] "22" "23" "24" "25" "26"
Transform factor columns in a data.frame to character vectors
df <-
data.frame(
a = 1:2,
b = factor(c("a", "b")),
c = as.character(letters[3:4]),
stringsAsFactors = FALSE
)
vapply(df, class, "")
## a b c
## "integer" "factor" "character"
## a b c
## "integer" "character" "character"
File name ready time stamps
## [1] "2020-09-11_20_11_33"
## [1] "20100127_102345" "20100127_102345"
## [1] "20100127102345" "20100127102345"
prepare multiple URLs via query parameter grid expansion
## [1] "id=1&lang=en" "id=2&lang=en" "id=3&lang=en" "id=1&lang=de" "id=2&lang=de" "id=3&lang=de"