---
title: "Functions Working on Data Frames"
author: "Hauke Sonnenberg"
date: "`r Sys.Date()`"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{Functions Working on Data Frames}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

```{r setup, include = FALSE}
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)
```

### Function `addRowWithName()`

This function does no more than adding a row to a data frame with `rbind` and
giving it a name:

```{r}
x <- data.frame(value = 10:11)

new_row <- data.frame(value = sum(x$value))

kwb.utils::addRowWithName(x, new_row, row.name = "total")
```

### Function `addSuffixToColumns()`

This function adds a postfix to the column names of a data frame. This may be
useful when column-binding data frames. The function can be used to indicate the
origin of each column by giving it a suffix related to the data frame that it
originates from.

```{r}
# Define a first data frame
data_frame_1 <- data.frame(
  id = 1:2, 
  first = c("Peter", "Mary"), 
  last = c("Miller", "Smith")
)

# Define a second data frame
data_frame_2 <- data.frame(
  height_cm = c(181, 171),
  weigth_kg = c(68, 59)
)

# Column-bind the data frames, after giving their columns a unique suffix
cbind(
  kwb.utils::addSuffixToColumns(data_frame_1, "_1"),
  kwb.utils::addSuffixToColumns(data_frame_2, "_2")
)
```

### Function `asNoFactorDataFrame`

This function is a shortcut to `as.data.frame(..., stringsAsFactors = FALSE)`. 
Using this function may slightly improve the readability of a script (as the 
number of arguments passed to the function is reduced):

```{r}
m <- matrix(letters[1:6], nrow = 2)

result_1 <- kwb.utils::asNoFactorDataFrame(m)
result_2 <- as.data.frame(m, stringsAsFactors = FALSE)

identical(result_1, result_2)
```

Functions Working on Data Frames

### Function columnToDate()
### Function columnwisePercentage()
### Function dropUnusedFactorLevels()
### Function extractRowRanges()
### Function fullySorted()
### Function firstPosixColumn()
### Function getKeywordPositions()
### Function hsAddMissingCols()
### Function hsDelEmptyCols()
### Function hsRenameColumns()
### Function insertColumns()
### Function mergeAll()
### Function moveColumnsToFront()
### Function noFactorDataFrame()
### Function pasteColumns()
### Function pasteColumns0()
### Function posixColumnAtPosition()
### Function rbindAll()
### Function removeColumns()
### Function removeEmptyColumns()
### Function renameAndSelect()
### Function renameColumns()
### Function resetRowNames()
### Function roundColumns()
### Function rowwisePercentage()
### Function safeColumnBind()
### Function safeMerge()
### Function safeRowBind()
### Function safeRowBindAll()
### Function selectColumns()
### Function setColumns()
### Function splitIntoFixSizedBlocks()
### Function tableLookup()
### Function unmerge()
