6

I'm looking for a way to align the numbers of the table by decimals. Any thoughts of what could be wrong?

\documentclass[12pt,a4paper]{article}
\usepackage{apacite}
\usepackage[latin1]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{psfrag}
\usepackage{amssymb}
\usepackage[left=2.5cm,right=2.5cm,top=2.5cm,bottom=2.5cm]{geometry}
\usepackage{graphicx}
\usepackage{float}
\usepackage[flushleft]{threeparttable}
\usepackage{enumitem}
\usepackage{hyperref}
\usepackage[english,spanish]{babel} 
\usepackage{mathptmx}
\usepackage{setspace}
\usepackage{dcolumn}
\newcolumntype{d}[1]{D{.}{\cdot}{#1}}
\begin{document}
\begin{tabular}{l*{1}{ccccc}}
    \multicolumn{5}{c}{Cuadro I}\\
    \multicolumn{5}{c}{Estadísticas descriptivas GEIH} \\
    \hline\hline
    &\multicolumn{5}{c}{}                                            \\
    &           Obs&        Media&          Desviación Estándar&         Min&         Máx\\
    \hline
    Ocupados    &   96703         &  .896&    .306&           0&           1\\
    Años de educación         &  96703          &    10.583&    4.331&           0&          26\\
    Soltero     &  96703          &    .281&     .449&           0&           1\\
    Jefe de hogar  &  96703          &    .435&    .496&           0&           1\\
    Edad       &    96703        &    39.301&    13.824&          18&         100\\
    \hline
    Ocupados según nivel de estudio       &      &            &            &            &            \\
    Ninguno     & 586599            &    .546&    .498&           0&           1\\
    Bachiller   &  586599          &    .203&    .402&           0&           1\\
    Técnico    &  586599          &    .161&    .367&           0&           1\\
    Universitario& 586599           &    .065&    .246&           0&           1\\
    Postgrado   &  586599          &    .000&    .007&           0&           1\\
    \hline
\end{tabular}
\end{document}
4
  • Sorry I forgot to include the d column type, now is there. May 5 '20 at 14:49
  • it's always easier for people to see the issue and test answers if you priovide a complete test document not a fragment as above which needs to be edited to make run May 5 '20 at 14:56
  • Actually I get a text error for \begin{tabular}{l*{1}{ccccc}}{d{3.2}}\multicolumn{5 the d{3.2} May 5 '20 at 15:06
  • the error is because that is typesetting d3.2 in the first cell, so \multicolumn comes too late, you intended the d column to be inside the first argument, bot after it. May 5 '20 at 15:17
6

You declared the d type but did not use it, something like

enter image description here

\documentclass[12pt,a4paper]{article}

% use utf-8 \usepackage[latin1]{inputenc}
\usepackage{dcolumn}
\newcolumntype{d}[1]{D{.}{\cdot}{#1}}
\begin{document}
% l*{1}{ccccc} is the same as lccccc and doesn't use d!

\begin{center}
\begin{tabular}{@{}l d{6.0} d{2.3} d{2.3} d{2.0} d{3.0} @{}}
    \multicolumn{6}{c}{Cuadro I}\\
    \multicolumn{6}{c}{Estadísticas descriptivas GEIH} \\
    \hline\hline
\\
\multicolumn{1}{c}{Obs}& 
\multicolumn{1}{c}{Media}&
\multicolumn{1}{c}{\begin{tabular}{@{}c@{}}Desviación\\Estándar\end{tabular}}&
\multicolumn{1}{c}{Min}&
\multicolumn{1}{c}{Máx}\\
    \hline
    Ocupados    &   96703         &  .896&    .306&           0&           1\\
    Años de educación         &  96703          &    10.583&    4.331&           0&          26\\
    Soltero     &  96703          &    .281&     .449&           0&           1\\
    Jefe de hogar  &  96703          &    .435&    .496&           0&           1\\
    Edad       &    96703        &    39.301&    13.824&          18&         100\\
    \hline
    \multicolumn{6}{@{}c@{}}{Ocupados según nivel de estudio}\\
    Ninguno     & 586599            &    .546&    .498&           0&           1\\
    Bachiller   &  586599          &    .203&    .402&           0&           1\\
    Técnico    &  586599          &    .161&    .367&           0&           1\\
    Universitario& 586599           &    .065&    .246&           0&           1\\
    Postgrado   &  586599          &    .000&    .007&           0&           1\\
    \hline
\end{tabular}

\end{center}

\end{document}

but the horizontal rules would look better if you used \midrule from the booktabs package.

17
  • a prefix \cdot with no preceding 0 looks a lot like a - are you sure you want this format? May 5 '20 at 15:20
  • How can I change the prefix \cdot to look like decimal, instead of - ? @DavidCarlisle May 5 '20 at 15:25
  • 1
    @FelipeTorresCruz use . (or perhaps , since this is Spanish?) instead of \cdot May 5 '20 at 15:27
  • Is spanish. Its weird when I use \newcolumntype{d}[1]{D{.}{.}{#1}} I get a text error but when i use \newcolumntype{d}[1]{D{.}{,}{#1}} it works. However I need . instead of the , . Any ideas of what could be the problem? Or how it could be solved? @DavidCarlisle May 5 '20 at 15:34
  • 1
    same result as what? @FelipeTorresCruz May 5 '20 at 15:56
3

Here's how I would present the table, with siunitx. This has several advantages, for instance automatic uniformization of the decimal separator and automatic formatting of large numbers.

Also numbers should always show the integer part and siunitx adds it automatically, if it is absent.

\documentclass[12pt,a4paper]{article}
\usepackage[spanish]{babel}
\usepackage{siunitx,booktabs}

\sisetup{output-decimal-marker={,}}

\begin{document}

\begin{table}[htp]
\centering

\caption{Estadísticas descriptivas GEIH}\label{add-here-a-label}

\medskip

\begin{tabular}{
  @{}
  l
  S[table-format=6.0]
  S[table-format=2.3]
  S[table-format=2.3]
  S[table-format=2.0]
  S[table-format=3.0]
  @{}
}
\toprule
& {Obs} & {Media} & {DE} & {Min} & {Máx} \\
\midrule
Ocupados          &  96703 &   .896 &   .306 &  0 &   1 \\
Años de educación &  96703 & 10.583 &  4.331 &  0 &  26 \\
Soltero           &  96703 &   .281 &   .449 &  0 &   1 \\
Jefe de hogar     &  96703 &   .435 &   .496 &  0 &   1 \\
Edad              &  96703 & 39.301 & 13.824 & 18 & 100 \\
\midrule
\multicolumn{6}{@{}l@{}}{\itshape Ocupados según nivel de estudio} \\
Ninguno           & 586599 &   .546 &   .498 &  0 &   1 \\
Bachiller         & 586599 &   .203 &   .402 &  0 &   1 \\
Técnico           & 586599 &   .161 &   .367 &  0 &   1 \\
Universitario     & 586599 &   .065 &   .246 &  0 &   1 \\
Postgrado         & 586599 &   .000 &   .007 &  0 &   1 \\
\bottomrule
\multicolumn{6}{@{}l@{}}{\footnotesize DE: Desviación Estándar} \\
\end{tabular}

\end{table}

\end{document}

enter image description here

4
  • Is there any way to change , for . ? @egreg May 5 '20 at 15:52
  • @FelipeTorresCruz Remove the \sisetup line.
    – egreg
    May 5 '20 at 15:56
  • I tried to use \usepackage{siunitx,booktabs} but i get the following error "File `l3backend-pdfmode.def' not found." @egreg May 5 '20 at 16:00
  • Thank you for your help @egreg May 5 '20 at 17:15
0

Some suggestions and comments, in no particular order:

  • You define the d column type but then don't seem to use it in the header of the tabular environment. I suggest that you replace

    \begin{tabular}{l*{1}{ccccc}}
    

    with

    \begin{tabular}{@{} l d{6.0} d{2.3} d{2.3} d{2.0} d{3.0} @{}}
    
  • Since the contents of the five header cells are not numeric, you need to smuggle them past dcolumn. See the use of \mc in the example below.

  • If you want to use commas as decimal separators in the pdf file, you should also change \newcolumntype{d}[1]{D{.}{\cdot}{#1}} to \newcolumntype{d}[1]{D{.}{,}{#1}}.

  • Use a table environment, and use the machinery of the caption package to customize the appearance of the captions. That way, you can cross-reference the table elsewhere in the document via LaTeX's \label-\ref system.

  • Replace

    \usepackage[left=2.5cm,right=2.5cm,top=2.5cm,bottom=2.5cm]{geometry}
    

    with

    \usepackage[margin=2.5cm]{geometry}
    
  • Replace

    Ocupados según nivel de estudio & & & & & \\
    

    with

    \multicolumn{6}{@{}l}{Ocupados según nivel de estudio} \\
    

    to give the table a much more compact appearance. Relatedly, do split Desviación Estándar across 2 lines.

enter image description here

\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{mathptmx}
\usepackage[english,spanish]{babel} 
\usepackage[margin=2.5cm]{geometry}

\usepackage{amsmath}
%%%\usepackage{amsfonts} % is loaded automatically by 'amssymb'
\usepackage{psfrag}  % are you sure you need this package?
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage{float}
\usepackage{apacite}
\usepackage[flushleft]{threeparttable}
\usepackage{enumitem}
\usepackage{setspace}

\usepackage{dcolumn}
\newcolumntype{d}[2]{D{.}{,}{#1}}

%% new material:
\usepackage{booktabs}
\usepackage[labelsep=newline,skip=0.333\baselineskip]{caption}
\renewcommand\thetable{\Roman{table}}
\newcommand\mc[2]{\multicolumn{1}{c}{#1}} % handy shortcut macro

\usepackage[colorlinks]{hyperref}
\usepackage[spanish,nameinlink]{cleveref} % optional

\begin{document}
\begin{table}[ht!]
\centering
\caption{Estadísticas descriptivas GEIH} \label{tab:GEIH}
\begin{tabular}{@{} l d{6.0} d{2.3} d{2.3} d{2.0} d{3.0} @{}}
\toprule
    & \mc{Obs}& \mc{Media} & \mc{Desviación}& \mc{Min} & \mc{Máx}\\
    &&& \mc{Estándar}\\
\midrule
    Ocupados          &  96703 &  0.896 &  0.306 &  0 &   1\\
    Años de educación &  96703 & 10.583 &  4.331 &  0 &  26\\
    Soltero           &  96703 &  0.281 &  0.449 &  0 &   1\\
    Jefe de hogar     &  96703 &  0.435 &  0.496 &  0 &   1\\
    Edad              &  96703 & 39.301 & 13.824 & 18 & 100\\
\midrule
    \multicolumn{6}{@{}l}{Ocupados según nivel de estudio} \\
    Ninguno           & 586599 &  0.546 &  0.498 &  0 &   1\\
    Bachiller         & 586599 &  0.203 &  0.402 &  0 &   1\\
    Técnico           & 586599 &  0.161 &  0.367 &  0 &   1\\
    Universitario     & 586599 &  0.065 &  0.246 &  0 &   1\\
    Postgrado         & 586599 &  0.000 &  0.007 &  0 &   1\\
\bottomrule
\end{tabular}
\end{table}

Una referencia cruzada al \cref{tab:GEIH}.
\end{document}
4
  • 1
    Mik text doesnt recognize some of the packages, so I get an error @Mico May 5 '20 at 16:24
  • @FelipeTorresCruz all those packages are in an up to date miktex, you may need to update using miktex package manager (in user and admin modes if you hav eboth) May 5 '20 at 16:52
  • Thank you for all your help @Mico May 5 '20 at 17:16
  • @FelipeTorresCruz - Which packages aren't recognized?
    – Mico
    May 5 '20 at 17:16

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.