Formatting a table to look nice
$begingroup$
my current code is:
binsize = 21;
data = {535, 481, 554, 567, 565, 513, 526, 506, 565, 475, 552, 533,
474, 556, 520, 508, 597, 479, 537, 499, 546, 473, 579, 526, 594,
477, 518, 538, 497, 565};
firstbin = 472;
a = BinCounts[data, {firstbin, Max[data] + binsize, binsize}];
b = Range[firstbin, Max[data] + binsize, binsize];
Transpose[{Take[b, Length[a]], a}] // TableForm
Which does give me a nice table, however I would like the bins to be labeled something like "472-492 6" instead of just "472 6"
any advice would be great, thank you.
table formatting
$endgroup$
add a comment |
$begingroup$
my current code is:
binsize = 21;
data = {535, 481, 554, 567, 565, 513, 526, 506, 565, 475, 552, 533,
474, 556, 520, 508, 597, 479, 537, 499, 546, 473, 579, 526, 594,
477, 518, 538, 497, 565};
firstbin = 472;
a = BinCounts[data, {firstbin, Max[data] + binsize, binsize}];
b = Range[firstbin, Max[data] + binsize, binsize];
Transpose[{Take[b, Length[a]], a}] // TableForm
Which does give me a nice table, however I would like the bins to be labeled something like "472-492 6" instead of just "472 6"
any advice would be great, thank you.
table formatting
$endgroup$
add a comment |
$begingroup$
my current code is:
binsize = 21;
data = {535, 481, 554, 567, 565, 513, 526, 506, 565, 475, 552, 533,
474, 556, 520, 508, 597, 479, 537, 499, 546, 473, 579, 526, 594,
477, 518, 538, 497, 565};
firstbin = 472;
a = BinCounts[data, {firstbin, Max[data] + binsize, binsize}];
b = Range[firstbin, Max[data] + binsize, binsize];
Transpose[{Take[b, Length[a]], a}] // TableForm
Which does give me a nice table, however I would like the bins to be labeled something like "472-492 6" instead of just "472 6"
any advice would be great, thank you.
table formatting
$endgroup$
my current code is:
binsize = 21;
data = {535, 481, 554, 567, 565, 513, 526, 506, 565, 475, 552, 533,
474, 556, 520, 508, 597, 479, 537, 499, 546, 473, 579, 526, 594,
477, 518, 538, 497, 565};
firstbin = 472;
a = BinCounts[data, {firstbin, Max[data] + binsize, binsize}];
b = Range[firstbin, Max[data] + binsize, binsize];
Transpose[{Take[b, Length[a]], a}] // TableForm
Which does give me a nice table, however I would like the bins to be labeled something like "472-492 6" instead of just "472 6"
any advice would be great, thank you.
table formatting
table formatting
edited 9 hours ago
Wombles
asked 9 hours ago
WomblesWombles
434
434
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
$begingroup$
You can use HistogramList
to get bin limits and bin counts in one step and process the output to get the desired structure:
{binlims, bincounts} = HistogramList[data, {firstbin, Max[data] + binsize, binsize}];
bins = Row[{#, #2 - 1}, "-"] & @@@ Partition[binlims, 2, 1];
TableForm[Transpose[{bins, bincounts}]]
Alternatively, you can use MovingMap
, Developer`PartitionMap
or
the (undocumented) 6-argument form of Partition
to get the first column:
bins2 = MovingMap[Row[{First@#, Last@# - 1}, "-"] &, binlims, 1]
bins3 = Developer`PartitionMap[Row[{First@#, Last@# - 1}, "-"] &, binlims, 2, 1];
bins4 = Partition[binlims, 2, 1, {1, -1}, {}, Row[{#, #2 - 1}, "-"] &];
bins == bins2 == bins3 == bins4
True
Finally, you can also use a combination of StringRiffle
and ToString
in place of Row
as follows:
bins5 = Partition[binlims, 2, 1, {1, -1}, {}, StringRiffle[ToString/@{#, #2 - 1}, " - "]&]
TableForm[Transpose[{bins5, bincounts}]]
$endgroup$
$begingroup$
Thank you very much!
$endgroup$
– Wombles
8 hours ago
$begingroup$
@Wombles, you are welcome.
$endgroup$
– kglr
8 hours ago
add a comment |
$begingroup$
Here is one way:
bb = b - 1;
c = Complement[bb, {Min[bb]}];
Transpose[{Take[b, Length[a]], ConstantArray["---", Length[a]], c, a}] // TableForm
Here is the output:
With MarcoB's hint, and some experimenting:
c = Complement[b - 1, {Min[b - 1]}];
y = Map[ToString, Take[b, Length[a]]];
z = Map[ToString, c];
Transpose@{Map[StringJoin, Transpose[{y, ConstantArray["---", Length[a]], z}]], a} // TableForm
$endgroup$
$begingroup$
I wish I knew more about string manipulation to get the first three columns to combine to one column of text!
$endgroup$
– mjw
8 hours ago
1
$begingroup$
You might wantToString
andStringJoin
$endgroup$
– MarcoB
8 hours ago
$begingroup$
@MarcoB, Yes, Thank you! That's what I was looking for! I actually foundToString
and figured there was a way of joining the columns ... Probably there is a more efficient way then what I've put together. At least it is a start.
$endgroup$
– mjw
4 hours ago
$begingroup$
Row
as suggested in kglr's answer, can also work as a substitute forStringJoin
.
$endgroup$
– mjw
3 hours ago
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
return StackExchange.using("mathjaxEditing", function () {
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
});
});
}, "mathjax-editing");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "387"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f192750%2fformatting-a-table-to-look-nice%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
$begingroup$
You can use HistogramList
to get bin limits and bin counts in one step and process the output to get the desired structure:
{binlims, bincounts} = HistogramList[data, {firstbin, Max[data] + binsize, binsize}];
bins = Row[{#, #2 - 1}, "-"] & @@@ Partition[binlims, 2, 1];
TableForm[Transpose[{bins, bincounts}]]
Alternatively, you can use MovingMap
, Developer`PartitionMap
or
the (undocumented) 6-argument form of Partition
to get the first column:
bins2 = MovingMap[Row[{First@#, Last@# - 1}, "-"] &, binlims, 1]
bins3 = Developer`PartitionMap[Row[{First@#, Last@# - 1}, "-"] &, binlims, 2, 1];
bins4 = Partition[binlims, 2, 1, {1, -1}, {}, Row[{#, #2 - 1}, "-"] &];
bins == bins2 == bins3 == bins4
True
Finally, you can also use a combination of StringRiffle
and ToString
in place of Row
as follows:
bins5 = Partition[binlims, 2, 1, {1, -1}, {}, StringRiffle[ToString/@{#, #2 - 1}, " - "]&]
TableForm[Transpose[{bins5, bincounts}]]
$endgroup$
$begingroup$
Thank you very much!
$endgroup$
– Wombles
8 hours ago
$begingroup$
@Wombles, you are welcome.
$endgroup$
– kglr
8 hours ago
add a comment |
$begingroup$
You can use HistogramList
to get bin limits and bin counts in one step and process the output to get the desired structure:
{binlims, bincounts} = HistogramList[data, {firstbin, Max[data] + binsize, binsize}];
bins = Row[{#, #2 - 1}, "-"] & @@@ Partition[binlims, 2, 1];
TableForm[Transpose[{bins, bincounts}]]
Alternatively, you can use MovingMap
, Developer`PartitionMap
or
the (undocumented) 6-argument form of Partition
to get the first column:
bins2 = MovingMap[Row[{First@#, Last@# - 1}, "-"] &, binlims, 1]
bins3 = Developer`PartitionMap[Row[{First@#, Last@# - 1}, "-"] &, binlims, 2, 1];
bins4 = Partition[binlims, 2, 1, {1, -1}, {}, Row[{#, #2 - 1}, "-"] &];
bins == bins2 == bins3 == bins4
True
Finally, you can also use a combination of StringRiffle
and ToString
in place of Row
as follows:
bins5 = Partition[binlims, 2, 1, {1, -1}, {}, StringRiffle[ToString/@{#, #2 - 1}, " - "]&]
TableForm[Transpose[{bins5, bincounts}]]
$endgroup$
$begingroup$
Thank you very much!
$endgroup$
– Wombles
8 hours ago
$begingroup$
@Wombles, you are welcome.
$endgroup$
– kglr
8 hours ago
add a comment |
$begingroup$
You can use HistogramList
to get bin limits and bin counts in one step and process the output to get the desired structure:
{binlims, bincounts} = HistogramList[data, {firstbin, Max[data] + binsize, binsize}];
bins = Row[{#, #2 - 1}, "-"] & @@@ Partition[binlims, 2, 1];
TableForm[Transpose[{bins, bincounts}]]
Alternatively, you can use MovingMap
, Developer`PartitionMap
or
the (undocumented) 6-argument form of Partition
to get the first column:
bins2 = MovingMap[Row[{First@#, Last@# - 1}, "-"] &, binlims, 1]
bins3 = Developer`PartitionMap[Row[{First@#, Last@# - 1}, "-"] &, binlims, 2, 1];
bins4 = Partition[binlims, 2, 1, {1, -1}, {}, Row[{#, #2 - 1}, "-"] &];
bins == bins2 == bins3 == bins4
True
Finally, you can also use a combination of StringRiffle
and ToString
in place of Row
as follows:
bins5 = Partition[binlims, 2, 1, {1, -1}, {}, StringRiffle[ToString/@{#, #2 - 1}, " - "]&]
TableForm[Transpose[{bins5, bincounts}]]
$endgroup$
You can use HistogramList
to get bin limits and bin counts in one step and process the output to get the desired structure:
{binlims, bincounts} = HistogramList[data, {firstbin, Max[data] + binsize, binsize}];
bins = Row[{#, #2 - 1}, "-"] & @@@ Partition[binlims, 2, 1];
TableForm[Transpose[{bins, bincounts}]]
Alternatively, you can use MovingMap
, Developer`PartitionMap
or
the (undocumented) 6-argument form of Partition
to get the first column:
bins2 = MovingMap[Row[{First@#, Last@# - 1}, "-"] &, binlims, 1]
bins3 = Developer`PartitionMap[Row[{First@#, Last@# - 1}, "-"] &, binlims, 2, 1];
bins4 = Partition[binlims, 2, 1, {1, -1}, {}, Row[{#, #2 - 1}, "-"] &];
bins == bins2 == bins3 == bins4
True
Finally, you can also use a combination of StringRiffle
and ToString
in place of Row
as follows:
bins5 = Partition[binlims, 2, 1, {1, -1}, {}, StringRiffle[ToString/@{#, #2 - 1}, " - "]&]
TableForm[Transpose[{bins5, bincounts}]]
edited 3 hours ago
answered 8 hours ago
kglrkglr
187k10203421
187k10203421
$begingroup$
Thank you very much!
$endgroup$
– Wombles
8 hours ago
$begingroup$
@Wombles, you are welcome.
$endgroup$
– kglr
8 hours ago
add a comment |
$begingroup$
Thank you very much!
$endgroup$
– Wombles
8 hours ago
$begingroup$
@Wombles, you are welcome.
$endgroup$
– kglr
8 hours ago
$begingroup$
Thank you very much!
$endgroup$
– Wombles
8 hours ago
$begingroup$
Thank you very much!
$endgroup$
– Wombles
8 hours ago
$begingroup$
@Wombles, you are welcome.
$endgroup$
– kglr
8 hours ago
$begingroup$
@Wombles, you are welcome.
$endgroup$
– kglr
8 hours ago
add a comment |
$begingroup$
Here is one way:
bb = b - 1;
c = Complement[bb, {Min[bb]}];
Transpose[{Take[b, Length[a]], ConstantArray["---", Length[a]], c, a}] // TableForm
Here is the output:
With MarcoB's hint, and some experimenting:
c = Complement[b - 1, {Min[b - 1]}];
y = Map[ToString, Take[b, Length[a]]];
z = Map[ToString, c];
Transpose@{Map[StringJoin, Transpose[{y, ConstantArray["---", Length[a]], z}]], a} // TableForm
$endgroup$
$begingroup$
I wish I knew more about string manipulation to get the first three columns to combine to one column of text!
$endgroup$
– mjw
8 hours ago
1
$begingroup$
You might wantToString
andStringJoin
$endgroup$
– MarcoB
8 hours ago
$begingroup$
@MarcoB, Yes, Thank you! That's what I was looking for! I actually foundToString
and figured there was a way of joining the columns ... Probably there is a more efficient way then what I've put together. At least it is a start.
$endgroup$
– mjw
4 hours ago
$begingroup$
Row
as suggested in kglr's answer, can also work as a substitute forStringJoin
.
$endgroup$
– mjw
3 hours ago
add a comment |
$begingroup$
Here is one way:
bb = b - 1;
c = Complement[bb, {Min[bb]}];
Transpose[{Take[b, Length[a]], ConstantArray["---", Length[a]], c, a}] // TableForm
Here is the output:
With MarcoB's hint, and some experimenting:
c = Complement[b - 1, {Min[b - 1]}];
y = Map[ToString, Take[b, Length[a]]];
z = Map[ToString, c];
Transpose@{Map[StringJoin, Transpose[{y, ConstantArray["---", Length[a]], z}]], a} // TableForm
$endgroup$
$begingroup$
I wish I knew more about string manipulation to get the first three columns to combine to one column of text!
$endgroup$
– mjw
8 hours ago
1
$begingroup$
You might wantToString
andStringJoin
$endgroup$
– MarcoB
8 hours ago
$begingroup$
@MarcoB, Yes, Thank you! That's what I was looking for! I actually foundToString
and figured there was a way of joining the columns ... Probably there is a more efficient way then what I've put together. At least it is a start.
$endgroup$
– mjw
4 hours ago
$begingroup$
Row
as suggested in kglr's answer, can also work as a substitute forStringJoin
.
$endgroup$
– mjw
3 hours ago
add a comment |
$begingroup$
Here is one way:
bb = b - 1;
c = Complement[bb, {Min[bb]}];
Transpose[{Take[b, Length[a]], ConstantArray["---", Length[a]], c, a}] // TableForm
Here is the output:
With MarcoB's hint, and some experimenting:
c = Complement[b - 1, {Min[b - 1]}];
y = Map[ToString, Take[b, Length[a]]];
z = Map[ToString, c];
Transpose@{Map[StringJoin, Transpose[{y, ConstantArray["---", Length[a]], z}]], a} // TableForm
$endgroup$
Here is one way:
bb = b - 1;
c = Complement[bb, {Min[bb]}];
Transpose[{Take[b, Length[a]], ConstantArray["---", Length[a]], c, a}] // TableForm
Here is the output:
With MarcoB's hint, and some experimenting:
c = Complement[b - 1, {Min[b - 1]}];
y = Map[ToString, Take[b, Length[a]]];
z = Map[ToString, c];
Transpose@{Map[StringJoin, Transpose[{y, ConstantArray["---", Length[a]], z}]], a} // TableForm
edited 3 hours ago
answered 8 hours ago
mjwmjw
4428
4428
$begingroup$
I wish I knew more about string manipulation to get the first three columns to combine to one column of text!
$endgroup$
– mjw
8 hours ago
1
$begingroup$
You might wantToString
andStringJoin
$endgroup$
– MarcoB
8 hours ago
$begingroup$
@MarcoB, Yes, Thank you! That's what I was looking for! I actually foundToString
and figured there was a way of joining the columns ... Probably there is a more efficient way then what I've put together. At least it is a start.
$endgroup$
– mjw
4 hours ago
$begingroup$
Row
as suggested in kglr's answer, can also work as a substitute forStringJoin
.
$endgroup$
– mjw
3 hours ago
add a comment |
$begingroup$
I wish I knew more about string manipulation to get the first three columns to combine to one column of text!
$endgroup$
– mjw
8 hours ago
1
$begingroup$
You might wantToString
andStringJoin
$endgroup$
– MarcoB
8 hours ago
$begingroup$
@MarcoB, Yes, Thank you! That's what I was looking for! I actually foundToString
and figured there was a way of joining the columns ... Probably there is a more efficient way then what I've put together. At least it is a start.
$endgroup$
– mjw
4 hours ago
$begingroup$
Row
as suggested in kglr's answer, can also work as a substitute forStringJoin
.
$endgroup$
– mjw
3 hours ago
$begingroup$
I wish I knew more about string manipulation to get the first three columns to combine to one column of text!
$endgroup$
– mjw
8 hours ago
$begingroup$
I wish I knew more about string manipulation to get the first three columns to combine to one column of text!
$endgroup$
– mjw
8 hours ago
1
1
$begingroup$
You might want
ToString
and StringJoin
$endgroup$
– MarcoB
8 hours ago
$begingroup$
You might want
ToString
and StringJoin
$endgroup$
– MarcoB
8 hours ago
$begingroup$
@MarcoB, Yes, Thank you! That's what I was looking for! I actually found
ToString
and figured there was a way of joining the columns ... Probably there is a more efficient way then what I've put together. At least it is a start.$endgroup$
– mjw
4 hours ago
$begingroup$
@MarcoB, Yes, Thank you! That's what I was looking for! I actually found
ToString
and figured there was a way of joining the columns ... Probably there is a more efficient way then what I've put together. At least it is a start.$endgroup$
– mjw
4 hours ago
$begingroup$
Row
as suggested in kglr's answer, can also work as a substitute for StringJoin
.$endgroup$
– mjw
3 hours ago
$begingroup$
Row
as suggested in kglr's answer, can also work as a substitute for StringJoin
.$endgroup$
– mjw
3 hours ago
add a comment |
Thanks for contributing an answer to Mathematica Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f192750%2fformatting-a-table-to-look-nice%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown