# writetable
将表写入文件
函数库: TyBase
# 语法
T = writetable(T)
T = writetable(T,filename)
T = writetable(___,key=value)
# 说明
T = writetable(T) 将表 T 写入逗号分隔的文本文件。文件名为 T.txt。示例
T 中每个变量的每一列都将成为输出文件中的列。T 的变量名称将成为文件第一行的列标题。
T = writetable(T,filename) 写入具有 filename 指定的名称和扩展名的文件。
writetable 根据指定扩展名确定文件格式。扩展名是下列格式之一:
- .txt、.dat 或 .csv(适用于带分隔符的文本文件)
- .xlsx(适用于 Excel® 电子表格文件)
T = writetable(___,key=value) 通过一个或多个名称-值对组参数指定其他选项将表写入文件中,并且可以包含以前语法中的任何输入参数。例如,您可以指定是否将变量名称写入为输出文件中的列标题。示例
# 示例
将表写入到文本文件
创建一个表。
using TyBase
T = DataFrame(
[["M"; "F"; "M"], [45; 41; 40], [45; 32; 34],
["NY"; "CA"; "MA"], [true; false; false]],
["Var1", "Var2_1", "Var2_2", "Var3", "Var4"]
)
3×5 DataFrame
Row │ Var1 Var2_1 Var2_2 Var3 Var4
│ String Int64 Int64 String Bool
─────┼───────────────────────────────────────
1 │ M 45 45 NY true
2 │ F 41 32 CA false
3 │ M 40 34 MA false
将表写入逗号分隔的文本文件。
writetable(T)
writetable 将输出名为 T.txt 的文本文件。
type("T.txt")
Var1,Var2_1,Var2_2,Var3,Var4
M,45,45,NY,true
F,41,32,CA,false
M,40,34,MA,false
将表写入空格分隔的文本文件
创建一个表。
using TyBase
T = DataFrame(
[["M"; "F"; "M"], [45; 41; 40], [45; 32; 34],
["NY"; "CA"; "MA"], [true; false; false]],
["Var1", "Var2_1", "Var2_2", "Var3", "Var4"]
)
3×5 DataFrame
Row │ Var1 Var2_1 Var2_2 Var3 Var4
│ String Int64 Int64 String Bool
─────┼───────────────────────────────────────
1 │ M 45 45 NY true
2 │ F 41 32 CA false
3 │ M 40 34 MA false
将表写入名为 myData.txt 的以空格分隔的文本文件并显示文件内容。
writetable(T,"myData.txt",delimiter=" ")
type("myData.txt")
Var1 Var2_1 Var2_2 Var3 Var4
M 45 45 NY true
F 41 32 CA false
M 40 34 MA false
将表写入包含行名称的文本文件
创建一个表。
using TyBase
LastName = ["Smith"; "Johnson"; "Williams"; "Jones"; "Brown"];
Age = [38; 43; 38; 40; 49];
Height = [71; 69; 64; 67; 64];
Weight = [176; 163; 131; 133; 119];
BloodPressure_1 = [124; 109; 125; 117; 122];
BloodPressure_2 = [93; 77; 83; 75; 80];
T = DataFrame(;LastName,Age,Height,Weight,BloodPressure_1,BloodPressure_2)
5×6 DataFrame
Row │ LastName Age Height Weight BloodPressure_1 BloodPressure_2
│ String Int64 Int64 Int64 Int64 Int64
─────┼───────────────────────────────────────────────────────────────────
1 │ Smith 38 71 176 124 93
2 │ Johnson 43 69 163 109 77
3 │ Williams 38 64 131 125 83
4 │ Jones 40 67 133 117 75
5 │ Brown 49 64 119 122 80
将表 T 写入名为 myPatientData.dat 的逗号分隔的文本文件,并显示文件内容。
writetable(T,"myPatientData.dat")
type("myPatientData.dat")
LastName,Age,Height,Weight,BloodPressure_1,BloodPressure_2
Smith,38,71,176,124,93
Johnson,43,69,163,109,77
Williams,38,64,131,125,83
Jones,40,67,133,117,75
Brown,49,64,119,122,80
将引用文本写入 CSV 文件
创建一个表。
using TyBase
T = DataFrame(
[["M"; "F"; "M"], [45; 41; 36],
["New York, NY"; "San Diego, CA"; "Boston, MA"], [true; false; false]],
["Var1", "Var2", "Var3", "Var4"]
)
3×4 DataFrame
Row │ Var1 Var2 Var3 Var4
│ String Int64 String Bool
─────┼─────────────────────────────────────
1 │ M 45 New York, NY true
2 │ F 41 San Diego, CA false
3 │ M 36 Boston, MA false
将表写入一个名为 myData.csv 的逗号分隔的文本文件,并查看文件内容。使用 'QuoteStrings' 名称-值对组参数以确保第三列中的逗号不被视为分隔符。
writetable(T,"myData.csv",delimiter=",",quotestrings=true)
type("myData.csv")
"Var1","Var2","Var3","Var4"
"M",45,"New York, NY",true
"F",41,"San Diego, CA",false
"M",36,"Boston, MA",false
将表写入到电子表格中特定的工作表和范围
创建一个表。
using TyBase
T = DataFrame(
[["M"; "F"; "M"], [45; 41; 40], [45; 32; 34],
["NY"; "CA"; "MA"], [true; false; false]],
["Var1", "Var2_1", "Var2_2", "Var3", "Var4"]
)
3×5 DataFrame
Row │ Var1 Var2_1 Var2_2 Var3 Var4
│ String Int64 Int64 String Bool
─────┼───────────────────────────────────────
1 │ M 45 45 NY true
2 │ F 41 32 CA false
3 │ M 40 34 MA false
将表写入到名为 myData.xls 的电子表格中。将第一张电子表格中的数据包含在 5×5 的区域中,转角位于 B2 和 F6。您可以通过指定对应于工作表的索引来更改要写入到的工作表。
writetable(T,"myData.xlsx",sheet=1,range="B2:F6");
写入包含任意变量名称的表格数据
创建一个表,其中包含三个具有任意变量名称的变量。第一个和第三个变量名称包含空格和非 ASCII 字符。
using TyBase
LastName = ["Sanchez"; "Johnson"; "Li"; "Diaz"; "Brown"];
Age = [38; 43; 38; 40; 49];
Smoker = [1; 0; 1; 0; 1];
varNames = ["Last Name", "Age", "Smoker (1 or 0)"];
T = DataFrame([LastName, Age, Smoker], varNames)
5×3 DataFrame
Row │ Last Name Age Smoker (1 or 0)
│ String Int64 Int64
─────┼───────────────────────────────────
1 │ Sanchez 38 1
2 │ Johnson 43 0
3 │ Li 38 1
4 │ Diaz 40 0
5 │ Brown 49 1
将数据写入文件 "sampletable.txt"。
writetable(T, "sampletable.txt");
使用 readtable 读回表格数据。
T1 = readtable("sampletable.txt")
5×3 DataFrame
Row │ Last Name Age Smoker (1 or 0)
│ String Float64 Float64
─────┼─────────────────────────────────────
1 │ Sanchez 38.0 1.0
2 │ Johnson 43.0 0.0
3 │ Li 38.0 1.0
4 │ Diaz 40.0 0.0
5 │ Brown 49.0 1.0
将数据追加到表的底部
将数据作为新行追加到包含现有数据的表的底部。
创建一个表。
using TyBase
InsectSpecies = ["Monarch Butterfly","Seven-spot Ladybird","Orchid Mantis",
"American Bumblebee","Blue Dasher Dragonfly"
]
InsectOrder = ["Lepidoptera"; "Coleoptera"; "Mantodea"; "Hymenoptera"; "Odonata"]
InsectFamily = ["Nymphalidae","Coccinellidae","Hymenopodidae",
"Apidae","Libellulidae"
]
PredatoryInsect = [0; 1; 1; 0; 1]
T = DataFrame(; InsectSpecies, InsectOrder, InsectFamily, PredatoryInsect)
5×4 DataFrame
Row │ InsectSpecies InsectOrder InsectFamily PredatoryInsect
│ String String String Int64
─────┼────────────────────────────────────────────────────────────────────
1 │ Monarch Butterfly Lepidoptera Nymphalidae 0
2 │ Seven-spot Ladybird Coleoptera Coccinellidae 1
3 │ Orchid Mantis Mantodea Hymenopodidae 1
4 │ American Bumblebee Hymenoptera Apidae 0
5 │ Blue Dasher Dragonfly Odonata Libellulidae 1
将表 T 写入名为 InsectCollection.txt 的文本文件。
writetable(T,"InsectCollection.txt",sheet=1,range="B2:F6");
创建表形式的新数据,以添加到现有表中。
newInsect = DataFrame(
[["Red-banded leafhopper"], ["Hemiptera"], ["Cicadellidae"], [0]],
["Var1", "Var2", "Var3", "Var4"]
)
1×4 DataFrame
Row │ Var1 Var2 Var3 Var4
│ String String String Int64
─────┼───────────────────────────────────────────────────────
1 │ Red-banded leafhopper Hemiptera Cicadellidae 0
使用 writemode="append" 名称-值对组参数将 newInsect 追加到 InsectCollection.txt 文件。
writetable(newInsect, "InsectCollection.txt"; writemode="append", writevariablenames=false);
将该表读回工作区中。
readtable("InsectCollection.txt")
6×4 DataFrame
Row │ InsectSpecies InsectOrder InsectFamily PredatoryInsect
│ String String String Float64
─────┼────────────────────────────────────────────────────────────────────
1 │ Monarch Butterfly Lepidoptera Nymphalidae 0.0
2 │ Seven-spot Ladybird Coleoptera Coccinellidae 1.0
3 │ Orchid Mantis Mantodea Hymenopodidae 1.0
4 │ American Bumblebee Hymenoptera Apidae 0.0
5 │ Blue Dasher Dragonfly Odonata Libellulidae 1.0
6 │ Red-banded leafhopper Hemiptera Cicadellidae 0.0
# 输入参数
T - 输入数据SpreadsheetImportOptions | DelimitedtextImportOptions
输入数据,指定为表。
filename - 文件名字符串
文件名,指定为字符串。
根据文件写入的位置,filename 可以采用下列形式之一。
| 位置 | 形式 |
| 当前文件夹 | 要写入当前文件夹,请在 filename 中指定文件名。 示例:"myTextFile.csv" |
| 其他文件夹 | 要写入不同于当前文件夹的文件夹,则在 filename 中指定完整或相对路径名称。 示例:"C:\myFolder\myTextFile.csv" 示例:"myFolder\myExcelFile.xlsx" |
- 如果 filename 包含文件扩展名,则写入函数基于扩展名确定文件格式。否则,写入函数会创建一个逗号分隔的文本文件,并附加扩展名 .txt;
- 如果 filename 不存在,则写入函数会创建该文件;
- 如果 filename 是一个现有文本文件的名称,则写入函数将覆盖该文件;
- 如果 filename 是一个现有电子表格文件的名称,则写入函数会将数据写入指定位置,但不会覆盖输入数据范围之外的任何值。
数据类型: String
# 名称-值对组参数
指定可选的、以等号相连的 key=value 名称-值对组参数。key 为参数名称,value 为对应的值。
示例: writevariablenames=false 指示变量名称不应作为输出文件的第一行包含在内。
# 文本和电子表格文件
filetype - 文件类型"text" | "spreadsheet"
文件类型,指定为以等号相连的 key=value 名称-值对组参数,包含 filetype 和 "text"、"spreadsheet"。
filetype 名称-值对组必须与 filename 输入参数配合使用。如果 filename 输入参数包含标准文件扩展名,则无需指定 filetype 名称-值对组参数。以下标准文件扩展名由写入函数识别:
- .txt、.dat 或 .csv(适用于带分隔符的文本文件)
- .xlsx(适用于 Excel 电子表格文件)
示例: filetype="spreadsheet"
数据类型: String
writevariablenames - 指示将变量名称写入为列标题的指示符true(默认) | false
指示将变量名称写入为列标题的指示符,指定为以等号相连的 key=value 名称-值对组参数,其中包含 writevariablenames 和 true 或 false。
| 提示符 | 行为 |
|---|---|
| true | 写入函数将变量名称作为输出的列标题包含在内。这是默认行为。 |
| false | 写入函数不会在输出中包含变量名称。 |
writemode - 写入模式字符串
写入模式,指定为以等号相连的 key=value 名称-值对组参数,其中包含 writemode 和一个字符串。根据文件类型选择一种写入模式。
| 文件类型 | 写入模式 |
|---|---|
| 文本文件 | "overwrite"(默认值)- 覆盖文件 "append" - 将数据追加到文件 如果您指定的文件不存在,则写入函数会创建数据并将数据写入新文件。 |
| 电子表格文件 | "inplace"(默认值)- 仅更新输入数据占用的范围。写入函数不会更改输入数据所占范围之外的任何数据。 如果没有指定工作表,则写入函数会写入第一个工作表。 "replacefile"- 从文件中删除所有其他工作表,然后清空指定的工作表并将输入数据写入其中。 |
示例: writemode="append"
数据类型: String
# 仅限文本文件
delimiter - 字段分隔符字符向量 | 字符串
字段分隔符,指定为由 delimiter 以及一个字符或字符串组成的对组。该字符串包含以下设定符之一:
下表列出了一些常用的字段分隔符。
| 设定符 | 字段分隔符 |
|---|---|
| "," | 逗号 |
| " " | 空格 |
| "\t" | 制表符 |
| ";" | 分号 |
| "|" | 垂直条 |
示例: delimiter=","
数据类型: String
quotestrings - 用于写入引用文本的指示符false(默认)| true
用于写入引用文本的指示符,指定为由 quotestrings 和 true 或 false 组成的对组。如果 quotestrings 为 true,则写入函数将文本括在双引号中,并将显示为文本一部分的任何双引号字符替换为两个双引号字符。
# 仅限电子表格文件
sheet - 要写入的工作表1 (默认) | 正整数 | 字符串
要写入的工作表,其中包含 sheet 和一个正整数(指示工作表索引)或字字符串(包含工作表名称)。工作表名称不能包含冒号(:)。
按名称或索引指定要写入的工作表:
名称 - 如果文件中不存在指定的工作表名称,则写入函数将在工作表集合的末尾添加一个新工作表;
索引 - 如果指定的工作表索引大于工作表数,则写入函数会追加空工作表,直至工作簿中的工作表数等于工作表索引。
您只能将 sheet 名称-值对组用于电子表格文件。
示例: sheet=2
示例: sheet="MySheetName"
数据类型: String | Int8 | Int16 | Int32 | Int64 | UInt8 | UInt16 | UInt32 | UInt64
range - 要写入的工作表的部分字符串
要写入的工作表的矩阵部分,其中包含 range 和一个采用以下格式之一的字符串。
| range 的值的格式 | 说明 |
|---|---|
| "Corner1" 起始单元格 | Corner1 指定要写入的区域的第一个单元格。写入函数从这个单元格开始写入数据。 例如:range="D2" |
| "Corner1:Corner2" 矩形范围 | Corner1 和 Corner2 是用于定义要写入区域的两个对角。例如,"D2:H4" 表示工作表上两个角落 D2 和 H4 之间的 3×5 矩形区域。 示例:range="D2:H4" |
您只能将 range 名称-值对组用于电子表格文件。
示例: range="A1:F10"
数据类型: String