{"id":21188726,"url":"https://github.com/calcuis/rjj","last_synced_at":"2026-03-15T22:44:42.171Z","repository":{"id":252590256,"uuid":"840877727","full_name":"calcuis/rjj","owner":"calcuis","description":"read-joint-jet","archived":false,"fork":false,"pushed_at":"2025-05-15T00:47:40.000Z","size":543,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-25T08:55:53.705Z","etag":null,"topics":["analysis","csv","data","filter","jointer","json","spliter","xls","xlsx"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/rjj/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/calcuis.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-08-11T00:57:13.000Z","updated_at":"2025-05-15T00:43:13.000Z","dependencies_parsed_at":"2024-08-16T18:06:06.918Z","dependency_job_id":"86afca5d-02e3-41eb-91f3-a73919c642df","html_url":"https://github.com/calcuis/rjj","commit_stats":null,"previous_names":["calcuis/rjj"],"tags_count":104,"template":false,"template_full_name":null,"purl":"pkg:github/calcuis/rjj","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/calcuis%2Frjj","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/calcuis%2Frjj/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/calcuis%2Frjj/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/calcuis%2Frjj/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/calcuis","download_url":"https://codeload.github.com/calcuis/rjj/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/calcuis%2Frjj/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30553448,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-15T15:03:43.933Z","status":"ssl_error","status_checked_at":"2026-03-15T15:03:37.630Z","response_time":61,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["analysis","csv","data","filter","jointer","json","spliter","xls","xlsx"],"created_at":"2024-11-20T18:47:33.407Z","updated_at":"2026-03-15T22:44:42.165Z","avatar_url":"https://github.com/calcuis.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"### rjj (read-joint-jet) [![Static Badge](https://img.shields.io/badge/ver-1.0.5-black?logo=github)](https://github.com/calcuis/rjj/releases)\nrjj is a simple cmd-based data transforming/analysis wizard 👻🛠⚙\n\n[\u003cimg src=\"https://raw.githubusercontent.com/calcuis/rjj/master/rjj.gif\" width=\"128\" height=\"128\"\u003e](https://github.com/calcuis/rjj)\n#### install it via pip/pip3\n```\npip install rjj\n```\n#### update rjj\n```\npip install rjj --upgrade\n```\n#### check current version\n```\nrjj -v\n```\n#### read user manual\n```\nrjj -h\n```\n### data transformer\nhelp you prepare your csv data file(s)\n#### convertor\nconvert json to csv\n```\nrjj c\n```\n*select a json file in the current directory, choose to enter another file name (don't need the extension) for output or not (Y/n); if not, the converted csv will be saved with the same name as the json*♻\n#### reversor\nreverse csv back to json\n```\nrjj r\n```\n*select a csv file in the current directory, choose to enter another file name for output or not (Y/n); if not, the converted json file will be saved with the same name; 🌀support any data type, even emoji*🐷\n#### converter\nconvert csv to json\n```\nrjj y\n```\n*fix the reversor invisible special char assigned to 1st column name issue; but in return without emoji support*\n#### cluster\nconvert csv to json with cluster layer\n```\nrjj z\n```\n*at least two columns in the selected csv file; column 2 should contain clustered data, i.e., a,b,c*\n#### eraser\nerase duplicate record(s) 🧽\n```\nrjj e\n```\n*remove repeated row(s) for a selected csv file*\n#### join 🖇\njoin all csv(s) together (repeated records accepted)\n```\nrjj join\n```\n*pure join; will not create identifier(s); differ from jointer below*\n#### inner join 🖇\ninner join two csv files\n```\nrjj i\n```\n*join record(s) based on identical value(s) in 1st column*\n#### outer join 🖇\nouter join two csv files\n```\nrjj o\n```\n*join record(s) based on value(s) in 1st column; identical value(s) will be overlapped*\n#### detector\ndetect the co-existing record(s) between two csv files📃🔍📃\n```\nrjj d\n```\n*select two csv files to execute the detection process, then give a name for the output file; co-existing record(s) will be indicated in a newly created column `Coexist`*\n#### filter\nlocate the input `Keyword` among all csv files in the current directory👁‍🗨 (and could opt to expand to its all sub-folder files; cool right?)🔍\n```\nrjj f\n```\n*source file (location info) will be indicated in a newly created first column `Source_file`; the exact coordinate (x,y) will be given in the newly created second and third columns, namely `Column_y` and `Row_x`; and the full record will be pasted behind for simplifying your auditing work* 📑\n#### matcher\nidentify matched/repeated record(s)📃📃🔍 among all csv in the current directory and extend to its sub-directories📁\n```\nrjj m\n```\n*provide a name to the output file (if not, the output file will be named as output.csv); source file (location) will be indicated in a newly created column `Source_file`*\n#### uniquer\nidentify unique/non-repeated record(s)🔍📃 among all csv in the current directory and extend to its sub-directories📁\n```\nrjj u\n```\n*give a name to the output file; source location will be indicated in a newly created column `Source_file`*\n#### binder\nbind all csv files together by columns in the current directory\n```\nrjj b\n```\n*binder is different from jointer below; it can be considered as a horizontal merge whereas jointer is for vertical merge (basically by rows)*\n### jointer and splitter 📌✂️\njoint or split your data file(s)\n#### jointer\njoint all csv files in the current directory together🖇\n```\nrjj j\n```\n*all file names will be stored in the first field of the newly created column `File`; when you execute the command you will be asked for assigning a name for the output file*\n#### splitter\nsplit the selected csv file to different csv files and name it according to the value in the first field of that selected file📑\n```\nrjj s\n```\n### extension for excel\nextended function/module(s) for handling excel file(s)\n#### xplit\nsplit the selected excel (.xls or .xlsx) to pieces and name it according to the value in the first field of that selected excel\n```\nrjj x\n```\n#### joint\njoint all excels (.xls and .xlsx) in the current directory together; all file names will be stored in the first field of the newly created column `File`\n```\nrjj t\n```\n*differ from csv jointer, since both .xls and .xlsx is accepted, and the file extention will not be taken, it will be merged while two of them share the same file name (cannot be split by the command above); understand this condition, make good use of it!* 🙌\n#### matxh\nidentify matched/repeated record(s)🔍 in the current directory and extend to its sub-directories; for excel\n```\nrjj h\n```\n*source file (location) will be indicated in a newly created column `Source_file`; the exact sheet name inside that file will be told in another newly created column `Sheet_name`*\n#### uniquex\nidentify unique/non-repeated record(s)🔍 in the current directory and extend to its sub-directories; for excel\n```\nrjj q\n```\n*source will be indicated in a newly created column `Source_file`; exact sheet will be told in `Sheet_name`*\n#### kilter\nlocate the input `Keyword` among all excel files (.xls and .xlsx) in the current directory (and could expand to its sub-folders)👁‍🗨\n```\nrjj k\n```\n*this feature is similar to the csv filter; but since each excel file is possible to contain more than one sheet📄, the sheet number will be stored in the newly created column `Sheet_z`, then the exact coordinate (x,y) will be given after it, namely `Column_y` and `Row_x`; and the full record will be pasted behind as well; super kooooo* 🍻\n### file/folder manager 📂👓\n#### analyzor\nrun file analysis (process time depends on file size)\n```\nrjj a\n```\n*return file statistics and a summary report; include sha256 hash, size, duplicate and uniqueness count, etc.*\n#### folder creator\ncreate folder(s) according to the selected list (prepare a column storing all the folder name first)\n```\nrjj dir\n```\n### statistical analysis 🧮\nsimple statistical analysis is now available to perform on rjj 🍻\n#### one-sample z-test\ncompare group with norm (population mean and standard deviation known)\n```\nrjj oz\n```\n#### one-sample t-test\ncompare group with norm (population mean known)\n```\nrjj ot\n```\n#### paired-sample t-test\ncompare group across time/paired-feature\n```\nrjj pt\n```\n*i.e., select first column as post-test data; second column as pre-test data*\n#### independent-sample t-test\ncompare two independent groups; able to opt to calculate it based on equal variance assumed or not assumed\n```\nrjj it\n```\n*select first column as data of group 1; second column as data of group 2*\n#### levene test\nrun Levene test for two groups (centered by mean)\n```\nrjj lv\n```\n*select first column as data of group 1; second column as data of group 2*\n#### homogeneity of variance\nrun Levene test for two or more groups\n```\nrjj hv\n```\n*select first column as group variable; second column as data*\n#### one-way anova\ncompare two or more groups\n```\nrjj oa\n```\n*select first column as group variable; second column as data*\n#### correlation analysis\ncalculate Pearson correlation coefficient (r)\n```\nrjj ca\n```\n*explore the relationship between two variables*\n### descriptive statistics\ncalculate it for a column\n```\nrjj n\n```\ncalculate it by group(s)\n```\nrjj g\n```\n### power analysis\n#### priori (sample size estimation)\nestimate sample size for `paired-sample t-test`\n```\nrjj pp\n```\nestimate sample size for `independent-sample t-test`\n```\nrjj pi\n```\nestimate sample size for `one-way anova`\n```\nrjj po\n```\nestimate sample size for `correlation analysis`\n```\nrjj pc\n```\nestimate sample size for `regression analysis`\n```\nrjj pr\n```\n#### post hoc (effect size evaluation)\nevaluate effect size and power for `one-sample t-test`\n```\nrjj et\n```\nevaluate effect size and power for `paired-sample t-test`\n```\nrjj ep\n```\nevaluate effect size and power for `independent-sample t-test`\n```\nrjj ei\n```\nevaluate effect size and power for `one-way anova`\n```\nrjj eo\n```\n*Tukey's Honest Significant Difference (HSD) implemented serves as post hoc multiple comparisons*\n### regression analysis\nmake prediction(s) about the future 🎯\n```\nrjj ra\n```\n*evaluate the quality of predictor(s) as well as the intended model*\n### regression model fit analysis\nrun model fit analysis of regression 📏\n```\nrjj fit\n```\n*evaluate three commonly used models (by R²): linear, quadratic and cubic; see which one fits your data most*\n### reliability test\nrun reliability analysis for a hypothetical construct; cheers! 🍻\n```\nrjj rt\n```\n*Cronbach alpha if item deleted is provided as well; make your item screening task easy*\n### exploratory factor analysis\nprobably you cannot believe it works 👻\n```\nrjj efa\n```\n*analyze the structure of interrelationship among a large set of items; summarize it into small set of factors*\n### fixed factor exploratory analysis\nrun it with a fixed number of factor(s) ☕️\n```\nrjj tea\n```\n*remove unnecessary columns in your csv file; since it eats them up all this time* 👻🍬🍬🍬\n### confirmatory factor analysis\nwow! finally it comes 🎃👻\n```\nrjj cfa\n```\n*draw svg factor diagram; you might need [graphviz](https://www.graphviz.org/download/) for rendering dot language to graph object (optional)* \n### pizza analysis 🍕\nheat the kitchen up for a pie 🥧\n```\nrjj pie\n```\n*opt to draw a pie chart*\n### plot a graph 📈\ndraw a scatter plot; awesome! 🙌\n#### plotter\n```\nrjj p\n```\n*select first column as data for x-axis; second column as data for y-axis*\n#### scatter\ndraw a scatter plot with line connecting points\n```\nrjj pl\n```\n[\u003cimg src=\"https://raw.githubusercontent.com/calcuis/rjj/master/demo1.jpg\" width=\"350\" height=\"280\"\u003e](https://github.com/calcuis/rjj/blob/main/demo1.jpg)\n[\u003cimg src=\"https://raw.githubusercontent.com/calcuis/rjj/master/demo2.jpg\" width=\"350\" height=\"280\"\u003e](https://github.com/calcuis/rjj/blob/main/demo2.jpg)\n#### liner\ndraw a line graph 📉\n```\nrjj l\n```\n#### charter\ndraw a bar chart 📊\n```\nrjj bar\n```\n*opt to assign label(s)* 🍻\n\n[\u003cimg src=\"https://raw.githubusercontent.com/calcuis/rjj/master/demo3b.jpg\" width=\"350\" height=\"280\"\u003e](https://github.com/calcuis/rjj/blob/main/demo3b.jpg)\n[\u003cimg src=\"https://raw.githubusercontent.com/calcuis/rjj/master/demo3a.jpg\" width=\"350\" height=\"280\"\u003e](https://github.com/calcuis/rjj/blob/main/demo3a.jpg)\n\n#### boxplot\ndraw one boxplot 📦\n```\nrjj bx\n```\n#### boxplotter\ndraw many boxplot(s) 📦📦📦\n```\nrjj box\n```\n[\u003cimg src=\"https://raw.githubusercontent.com/calcuis/rjj/master/demo3c.jpg\" width=\"350\" height=\"280\"\u003e](https://github.com/calcuis/rjj/blob/main/demo3c.jpg)\n[\u003cimg src=\"https://raw.githubusercontent.com/calcuis/rjj/master/demo3d.jpg\" width=\"350\" height=\"280\"\u003e](https://github.com/calcuis/rjj/blob/main/demo3d.jpg)\n#### god knows\ndraw a map from god angle 👼\n```\nrjj map\n```\n#### donut\nbake me a donut 🍩\n```\nrjj donut\n```\n[\u003cimg src=\"https://raw.githubusercontent.com/calcuis/rjj/master/demo5.jpg\" width=\"350\" height=\"280\"\u003e](https://github.com/calcuis/rjj/blob/main/demo5.jpg)\n[\u003cimg src=\"https://raw.githubusercontent.com/calcuis/rjj/master/demo4.jpg\" width=\"350\" height=\"280\"\u003e](https://github.com/calcuis/rjj/blob/main/demo4.jpg)\n#### clean\ncheck and clear temp folder (release more storage)\n```\nrjj clean\n```\n#### output\ngenerate csv and json output; beta test with columns: id, group, min (dynamic column names)\n```\nrjj output\n```\n#### report\ngenerate pdf report(s); beta test with columns: id, name, group, min (dynamic column names)\n```\nrjj report\n```\n#### point\ncompute point; beta test with columns: Session and Score; results will be stored in columns: Sum and Point\n```\nrjj point\n```\n#### timestamp cutter\ncut timestamp into pieces: Year, Month, Day and Time\n```\nrjj cut\n```\n#### timestamp gluer\nglue columns: Year, Month, Day and Time together as timestamp\n```\nrjj glue\n```\n#### minify\nminify all py file(s) in the current directory (original file will be replaced)\n```\nrjj minify\n```\n#### py minifier\nminify all py file(s) in the current directory and its subdirectories (original file will be replaced)\n```\nrjj my\n```\n#### js minifier\nminify js code/file\n```\nrjj ms\n```\n#### html minifier\nminify html\n```\nrjj mh\n```\n#### json minifier\nminify json (original file will be replaced)\n```\nrjj mj\n```\n#### json\njoin all json up\n```\nrjj json\n```\n#### txt\nconvert all csv to txt in the current directory\n```\nrjj txt\n```\n#### ico\nconvert png to ico\n```\nrjj ico\n```\n#### i2p\nconvert ico to png\n```\nrjj i2p\n```\n#### png\ncreate a transparent png with specific width and height\n```\nrjj png\n```\n#### gif\ncreate a gif animation with picture, transition time and loop specified 🎬\n```\nrjj gif\n```\n#### prompt\ngenerate random txt prompt/descriptor(s) from json source (see [sample](https://github.com/calcuis/rjj/blob/main/descriptor.json))\n```\nrjj prompt\n```\n#### read\nread a data file and print the content to console\n```\nrjj read\n```\n#### code\nencode and/or decode\n```\nrjj code\n```\n#### home\nvist rjj's dirty house 👻🏰\n```\nrjj home\n```\n🏩 *home sweet home ~~~ [https://rjj.gguf.org](https://rjj.gguf.org/)*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcalcuis%2Frjj","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcalcuis%2Frjj","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcalcuis%2Frjj/lists"}