datafort_joins Module

DataFort Joins Module

This module provides standalone join and merge functions for data frames. All functions take a data_frame as the first argument instead of being type-bound procedures.

Functions

Join Functions

  • df_inner_join(df1, df2, key_col1, key_col2) - SQL-style inner join
  • df_left_join(df1, df2, key_col1, key_col2) - SQL-style left join
  • df_right_join(df1, df2, key_col1, key_col2) - SQL-style right join
  • df_outer_join(df1, df2, key_col1, key_col2) - SQL-style outer join (full outer join)

Merge Functions

  • df_merge(df1, df2, on_column, how) - Merge using column names

Notes

  • All join functions return a new data frame
  • Key columns must have the same data type (integer, real, or character)
  • Right table columns are suffixed with “_right” to avoid name conflicts
  • For merge, the ‘how’ parameter can be: “inner”, “left”, “right”, or “outer”


Functions

public function df_inner_join(df1, df2, key_col1, key_col2) result(joined_df)

Perform an inner join between two data frames

Read more…

Arguments

Type IntentOptional Attributes Name
type(data_frame), intent(in) :: df1
type(data_frame), intent(in) :: df2
integer, intent(in) :: key_col1
integer, intent(in) :: key_col2

Return Value type(data_frame)

public function df_left_join(df1, df2, key_col1, key_col2) result(joined_df)

Perform a left join between two data frames

Read more…

Arguments

Type IntentOptional Attributes Name
type(data_frame), intent(in) :: df1
type(data_frame), intent(in) :: df2
integer, intent(in) :: key_col1
integer, intent(in) :: key_col2

Return Value type(data_frame)

public function df_merge(df1, df2, on_column, how) result(merged_df)

Merge two dataframes on column names (similar to SQL join but using names)

Read more…

Arguments

Type IntentOptional Attributes Name
type(data_frame), intent(in) :: df1
type(data_frame), intent(in) :: df2
character(len=*), intent(in) :: on_column
character(len=*), intent(in) :: how

Return Value type(data_frame)

public function df_outer_join(df1, df2, key_col1, key_col2) result(joined_df)

Perform an outer join between two data frames

Read more…

Arguments

Type IntentOptional Attributes Name
type(data_frame), intent(in) :: df1
type(data_frame), intent(in) :: df2
integer, intent(in) :: key_col1
integer, intent(in) :: key_col2

Return Value type(data_frame)

public function df_right_join(df1, df2, key_col1, key_col2) result(joined_df)

Perform a right join between two data frames

Read more…

Arguments

Type IntentOptional Attributes Name
type(data_frame), intent(in) :: df1
type(data_frame), intent(in) :: df2
integer, intent(in) :: key_col1
integer, intent(in) :: key_col2

Return Value type(data_frame)


Subroutines

private subroutine build_joined_dataframe(df1, df2, indices1, indices2, num_rows, result_df)

Helper subroutine to build joined dataframe from match indices

Read more…

Arguments

Type IntentOptional Attributes Name
type(data_frame), intent(in) :: df1
type(data_frame), intent(in) :: df2
integer, intent(in), dimension(:) :: indices1
integer, intent(in), dimension(:) :: indices2
integer, intent(in) :: num_rows
type(data_frame), intent(out) :: result_df