The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

The following examples use the following table_string helper to succintly define tables:

# Convert a string into a data.frame
table_string <- function (text, ...) read.table(
    text = text,
    blank.lines.skip = TRUE,
    header = TRUE,
    stringsAsFactors = FALSE,
    ...)

Firstly, connect to a database and set up some areas/divisions:

mdb <- mfdb(tempfile(fileext = '.duckdb'))
mfdb_import_area(mdb, table_string('
name  division size
45G01     divA   10
45G02     divA  200
45G03     divB  400
'))

Importing data

Normally when using mfdb_import_survey you supply count, length, weight columns. But other lenghts can also be supplied:

mfdb_import_survey(mdb, data_source = "x",
    table_string('
year    month   areacell        species length  age     weight  liver_weight    gonad_weight    stomach_weight
2000    1       45G01           COD     21      2       210 93      82      72
2000    1       45G02           COD     34      3       220 28      93      99
2000    1       45G03           COD     44      4       230 93      85      72
    '))

Querying data

To get any additional weights back when querying, you need to supply measurements, for example:

agg_data <- mfdb_sample_totalweight(mdb, c('age'), list(
    age = mfdb_unaggregated(),
    null = NULL), measurements = c('overall', 'liver', 'gonad', 'stomach'))
agg_data
## $`0.0.0.0`
##   year step area age total_weight total_liver_weight total_gonad_weight
## 1  all  all  all   2          210                 93                 82
## 2  all  all  all   3          220                 28                 93
## 3  all  all  all   4          230                 93                 85
##   total_stomach_weight
## 1                   72
## 2                   99
## 3                   72

Single measurements are also possible:

agg_data <- mfdb_sample_totalweight(mdb, c('age'), list(
    age = mfdb_unaggregated(),
    null = NULL), measurements = c('stomach'))
agg_data
## $`0.0.0.0`
##   year step area age total_stomach_weight
## 1  all  all  all   2                   72
## 2  all  all  all   3                   99
## 3  all  all  all   4                   72

We can also use mfdb_sample_meanweight to aggregate:

agg_data <- mfdb_sample_meanweight(mdb, c('age'), list(
    null = NULL), measurements = c('liver', 'stomach'))
agg_data
## $`0.0.0.0`
##   year step area age number mean_liver_weight mean_stomach_weight
## 1  all  all  all all      3          71.33333                  81

As well as mfdb_sample_meanweight_stddev:

agg_data <- mfdb_sample_meanweight_stddev(mdb, c('age'), list(
    null = NULL), measurements = c('overall', 'gonad'))
agg_data
## $`0.0.0.0`
##   year step area age number mean mean_gonad_weight stddev stddev_gonad_weight
## 1  all  all  all all      3  220          86.66667     10            5.686241
mfdb_disconnect(mdb)

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.