#' Extract specific subfield from funds dataframe
#'
#' @param df A dataframe made by read_funds_txt.
#' @param field_name A string of field_name 000-999.
#' @param subfield_name A string of subfield name starting with "$".
#' @param preserve_field_names A logic. Whether field names should be saved in resulting dataframe.
#' TRUE by default.
#' @param preserve_field_number A logic. Whether field numbers should be saved in resulting dataframe.
#' FALSE by default.
#' @examples
#' subfield_content(df = fund_df, field_name = "200", subfield_name = "$a")
#' subfield_content(df = fund_df, field_name = "210", subfield_name = "$c", preserve_field_names = FALSE)
subfield_content <- function(df, field_name, subfield_name, preserve_field_names = TRUE,
preserve_field_number = FALSE) {
df <- df %>% filter(field == field_name)
id <- df$id
var <- lapply(
df$var,
subfield_extractor,
subfield_name
) %>% unlist()
l <- lapply(
df$var,
str_count,
fixed(subfield_name)
) %>% unlist()
l_n <- ifelse(l == 0, 0, 1)
field_number <- rep(df$field_number, l_n)
id <- rep(id, l)
df <- data.frame(
id = id,
var = var
)
if (preserve_field_number) {
df <- data.frame(
id = id,
field_number = field_number,
var = var
)
}
if (preserve_field_names) {
df <- df %>% mutate(field = field_name, subfield = subfield_name) %>% select(id, field, subfield, var)
}
return(df)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.