Sometimes the output of the list
command can be clumsy, showing an entire observation with all of the variables
wrapped across the screen. Sometimes you would like the data shown in columns
without the observations wrapping across the screen. You can obtain an
add on program called listblck that can do this. The
listblck command was written by Jeroen Weesie and appears in the
Stata
Technical Bulletin #50. You can download
listblck from within Stata by typing search listblck (see
How can I used the search command to search for programs and get additional
help? for more information about using search).
First we’re
going to show some output from list to illustrate what it can do, and
where you may run into problems, then we’ll move on to show you what you can do
with listblk. To do this we’ll use the high school and beyond
data file we use in our Stata Classes, the code below downloads the dataset.
use https://stats.idre.ucla.edu/stat/stata/notes/hsb2, clear (highschool and beyond (200 cases))
We use the list command to list the first five observations, and we see
that this can be hard to read.
list in 1/5
+-------------------------------------------------------------------------+
1. | id | female | race | ses | schtyp | prog | read | write | math |
| 70 | male | white | low | public | general | 57 | 52 | 41 |
|-------------------------------------------------------------------------|
| science | socst |
| 47 | 57 |
+-------------------------------------------------------------------------+
+-------------------------------------------------------------------------+
2. | id | female | race | ses | schtyp | prog | read | write | math |
| 121 | female | white | middle | public | vocation | 68 | 59 | 53 |
|-------------------------------------------------------------------------|
| science | socst |
| 63 | 61 |
+-------------------------------------------------------------------------+
+-------------------------------------------------------------------------+
3. | id | female | race | ses | schtyp | prog | read | write | math |
| 86 | male | white | high | public | general | 44 | 33 | 54 |
|-------------------------------------------------------------------------|
| science | socst |
| 58 | 31 |
+-------------------------------------------------------------------------+
+-------------------------------------------------------------------------+
4. | id | female | race | ses | schtyp | prog | read | write | math |
| 141 | male | white | high | public | vocation | 63 | 44 | 47 |
|-------------------------------------------------------------------------|
| science | socst |
| 53 | 56 |
+-------------------------------------------------------------------------+
+-------------------------------------------------------------------------+
5. | id | female | race | ses | schtyp | prog | read | write | math |
| 172 | male | white | middle | public | academic | 47 | 52 | 57 |
|-------------------------------------------------------------------------|
| science | socst |
| 53 | 61 |
+-------------------------------------------------------------------------+
We can try to the table option,
which will put each case on a single line, which should
be easier to read. (Note table is the default display method for list; however, Stata
will switch to display mode under some circumstances.)
list in 1/5, table
+----------------------------------------------------------------------------
> ---------------+
| id female race ses schtyp prog read write math s
> cience socst |
|----------------------------------------------------------------------------
> ---------------|
1. | 70 male white low public general 57 52 41
> 47 57 |
2. | 121 female white middle public vocation 68 59 53
> 63 61 |
3. | 86 male white high public general 44 33 54
> 58 31 |
4. | 141 male white high public vocation 63 44 47
> 53 56 |
5. | 172 male white middle public academic 47 52 57
> 53 61 |
+----------------------------------------------------------------------------
> ---------------+
Looking at the above output, we can see why Stata selected display mode, that
is, to avoid having the table wrap.
This is where listblck is useful. Compare the above output with the result
from the listblck command below.
listblck in 1/5
. listblck in 1/5
+---------------------------------------------------+
| id female race ses schtyp prog |
|---------------------------------------------------|
1. | 70 male white low public general |
2. | 121 female white middle public vocation |
3. | 86 male white high public general |
4. | 141 male white high public vocation |
5. | 172 male white middle public academic |
+---------------------------------------------------+
+---------------------------------------+
| read write math science socst |
|---------------------------------------|
1. | 57 52 41 47 57 |
2. | 68 59 53 63 61 |
3. | 44 33 54 58 31 |
4. | 63 44 47 53 56 |
5. | 47 52 57 53 61 |
+---------------------------------------+
listblk has a number of options that allow us to modify what is shown.
We can use the nolabel
option to suppress the printing of value labels, but you can see that it still
displays the data in a very wide format. This is because the formats for
the variables try to provide enough space to display the labeled value (e.g.,
for the variable female, there is enough room to display the value “female”).
listblck in 1/5, nolabel
+-------------------------------------------+
| id female race ses schtyp prog |
|-------------------------------------------|
1. | 70 0 4 1 1 1 |
2. | 121 1 4 2 1 3 |
3. | 86 0 4 3 1 1 |
4. | 141 0 4 3 1 3 |
5. | 172 0 4 2 1 2 |
+-------------------------------------------+
+---------------------------------------+
| read write math science socst |
|---------------------------------------|
1. | 57 52 41 47 57 |
2. | 68 59 53 63 61 |
3. | 44 33 54 58 31 |
4. | 63 44 47 53 56 |
5. | 47 52 57 53 61 |
+---------------------------------------+
To try and fit more on a single
line, you can suppress the display of the observation number.
In the examples above, sometimes the socst variable was displayed all alone and you could not see the id associated with the socst score. Since id is the first variable, we can use the repeat(1) option and the first variable will be repeated for every block of data.listblck in 1/5, nolabel noobs +--------------------------------------------------+ | id female race ses schtyp prog read | |--------------------------------------------------| | 70 0 4 1 1 1 57 | | 121 1 4 2 1 3 68 | | 86 0 4 3 1 1 44 | | 141 0 4 3 1 3 63 | | 172 0 4 2 1 2 47 | +--------------------------------------------------+ +--------------------------------+ | write math science socst | |--------------------------------| | 52 41 47 57 | | 59 53 63 61 | | 33 54 58 31 | | 44 47 53 56 | | 52 57 53 61 | +--------------------------------+
listblck in 1/5, repeat(1)
+---------------------------------------------------+
| id female race ses schtyp prog |
|---------------------------------------------------|
1. | 70 male white low public general |
2. | 121 female white middle public vocation |
3. | 86 male white high public general |
4. | 141 male white high public vocation |
5. | 172 male white middle public academic |
+---------------------------------------------------+
+---------------------------------------------+
| id read write math science socst |
|---------------------------------------------|
1. | 70 57 52 41 47 57 |
2. | 121 68 59 53 63 61 |
3. | 86 44 33 54 58 31 |
4. | 141 63 44 47 53 56 |
5. | 172 47 52 57 53 61 |
+---------------------------------------------+
If you wanted a different variable first, you can use
the order command to tell Stata what variable comes first.
Suppose you wanted gender to come first, and you wanted gender repeated
on every line. You could use the order command and then the repeat(1)
option, as illustrated below.
order female
listblck in 1/5, repeat(1)
+---------------------------------------------------+
| female id race ses schtyp prog |
|---------------------------------------------------|
1. | male 70 white low public general |
2. | female 121 white middle public vocation |
3. | male 86 white high public general |
4. | male 141 white high public vocation |
5. | male 172 white middle public academic |
+---------------------------------------------------+
+------------------------------------------------+
| female read write math science socst |
|------------------------------------------------|
1. | male 57 52 41 47 57 |
2. | female 68 59 53 63 61 |
3. | male 44 33 54 58 31 |
4. | male 63 44 47 53 56 |
5. | male 47 52 57 53 61 |
+------------------------------------------------+
You can use the order id
command, and id is the first variable again.
order id
listblck in 1/5, repeat(1)
+---------------------------------------------------+
| id female race ses schtyp prog |
|---------------------------------------------------|
1. | 70 male white low public general |
2. | 121 female white middle public vocation |
3. | 86 male white high public general |
4. | 141 male white high public vocation |
5. | 172 male white middle public academic |
+---------------------------------------------------+
+---------------------------------------------+
| id read write math science socst |
|---------------------------------------------|
1. | 70 57 52 41 47 57 |
2. | 121 68 59 53 63 61 |
3. | 86 44 33 54 58 31 |
4. | 141 63 44 47 53 56 |
5. | 172 47 52 57 53 61 |
+---------------------------------------------+
For more information
For more information, see the help or reference manual about
the list command
and the order command.