อ่าน input file โดยใช้ Mathematica

จากตัวอย่างเกี่ยวกับการหาคำแรกหรือชื่อตัวแปรจาก input file http://www.sakngoi.com/?p=69 เราสามารถเขียนโดยใช้ Mathematica ได้เช่น

ExtractVal[txtin_List, keyword_String] := Module[{pos, val},
(* extract the value of the keyword from the input file *)
(* txtin = Import[inputfile,”Table”]; *)
pos = Select[Position[ToLowerCase /@ txtin, keyword], #[[2]] == 1 &];
If[Length@pos == 1, val = txtin[[pos[[1, 1]], 2]];];
val
];

โดยที่ keyword ใน function ExtractVal นั้นก็เป็นชื่อตัวแปรที่เราต้องการนำไปใช้

ตัวอย่าง function ReadPar นี้จะให้ค่าที่อ่านได้จาก input file โดยในที่นี้สมมุติให้ ชื่อตัวแปรที่ต้องการค่าสำหรับ function DistributeN มีดังนี้คือ “initn”, “lifecycle”, “mu”, และ “sigma”

ReadPar[inputfile_String] := Module[{txtin, outls, distributenparms},
txtin = Import[inputfile, “Table”];
outls = {};

(* for DistributeN *)
distributenparms = {“initn”, “lifecycle”, “mu”, “sigma”};
outls = ToExpression/@(ExtractVal[txtin, #] & /@ distributenparms);

If[Length@outls!=Length@distributenparms,
Print[“Please check your input file. Some values are missing.”];
];

outls
];

ตัวอย่างของ input file (input.in)

initN    2.30*10^11
Mu       10
LifeCycle    48
Sigma    5

การใช้ก็เพียงพิมพ์ ReadPar[“input.in”] โดยคำตอบที่ได้จะเป็น

{2.3*10^11, 48, 10, 5}

การรวมMS Excel sheets ไว้ในหน้าเดียวกันด้วย Mathematica

นักสถิติคนหนึ่งส่งไฟล์ข้อมูลที่เก็บใน Excel มาให้ เพราะต้องการให้รวมข้อมูลที่มีหลาย sheets โดยที่แต่ล่ะ sheet จะมี header เหมือนกันไว้ใน sheet เดียวกันเพื่อความสะดวกในการนำไปใช้ในโปรแกรมสถิติตัวอื่นเช่น STATA หรือ R วิธีที่ผมทำก็ง่ายมากเลยครับ ผมก็ให้ Mathematica อ่านข้อมูลเข้ามาทีล่ะ sheet ด้วยคำสั่ง Import เอามาต่อๆกันแล้วก็ Export มันออกมาเป็นไฟล์ใหม่ครับ ดูตัวอย่างด้านล่างครับ

(* เปลี่ยนFolderไปที่ไฟล์ข้อมูลเก็บอยู่ เช่นที่ d:/works*)
SetDirectory[“d:/works”];

(*อ่านข้อมูลทั้งหมดเข้ามาใน Mathematica พร้อมกับใช้ Flatten เพื่อเรียงข้อมูลใหม่*)
dat = Flatten[Import[“data.xlsx”, {“Data”}],1];

(* จากนั้นก็สร้างไฟล์ใหม่ขึ้นมา  *)
Export[“newdata.xlsx”, dat,”XLSX”]

การอ่านไฟล์ Excel (.XLS, .XLSX) ด้วยคำสั่ง Import นั้นสามารถที่จะระบุตำแหน่งใน sheet และหมายเลขหรือชื่อของ sheet ได้ครับ สะดวกมากๆ
ดูรายละเอียดเพิ่มเติมได้ที่  http://reference.wolfram.com/mathematica/ref/format/XLSX.html

ลองดูที่นี่เพิ่มเติมครับ ผมเขียนเป็นappง่ายไว้ใช้ออนไลน์ครับ

http://www.sakngoi.com/2018/06/13/รวมชีทไฟล์-xlsx-แบบง่ายๆ/