diff --git a/src/DataFrame/Monad.hs b/src/DataFrame/Monad.hs index cbcfd53..28a5f5e 100644 --- a/src/DataFrame/Monad.hs +++ b/src/DataFrame/Monad.hs @@ -14,6 +14,7 @@ import DataFrame.Internal.Column (Columnable) import DataFrame.Internal.Expression (Expr (..)) import qualified Data.Text as T +import System.Random -- A re-implementation of the state monad. -- `mtl` might be too heavy a dependency just to get @@ -61,6 +62,9 @@ renameM expr newName = deriveM newName expr filterWhereM :: Expr Bool -> FrameM () filterWhereM p = modifyM (D.filterWhere p) +sampleM :: (RandomGen g) => g -> Double -> FrameM () +sampleM pureGen p = modifyM (D.sample pureGen p) + filterJustM :: (Columnable a) => Expr (Maybe a) -> FrameM (Expr a) filterJustM (Col name) = FrameM $ \df -> let df' = D.filterJust name df diff --git a/src/DataFrame/Operations/Subset.hs b/src/DataFrame/Operations/Subset.hs index 1f21b9d..c4806db 100644 --- a/src/DataFrame/Operations/Subset.hs +++ b/src/DataFrame/Operations/Subset.hs @@ -18,11 +18,23 @@ import qualified Prelude import Control.Exception (throw) import Data.Function ((&)) -import Data.Maybe (fromJust, fromMaybe, isJust, isNothing) +import Data.Maybe ( + fromJust, + fromMaybe, + isJust, + isNothing, + ) import Data.Type.Equality (TestEquality (..)) -import DataFrame.Errors (DataFrameException (..), TypeErrorContext (..)) +import DataFrame.Errors ( + DataFrameException (..), + TypeErrorContext (..), + ) import DataFrame.Internal.Column -import DataFrame.Internal.DataFrame (DataFrame (..), empty, getColumn) +import DataFrame.Internal.DataFrame ( + DataFrame (..), + empty, + getColumn, + ) import DataFrame.Internal.Expression import DataFrame.Internal.Interpreter import DataFrame.Operations.Core