查看原文
其他

软件应用 | findname——想要什么找什么

数据Seminar 2022-12-31

The following article is from Stata and Python数据分析 Author 爬虫俱乐部

本文转载自公众号Stata and Python数据分析

作者:魏若芙,河南大学经济学院

1.导读

在运用Stata进行数据分析时,我们可能会用到很多微观调查数据,这些数据通常会包含很多变量,在处理的过程中一不小心就会忘记变量名,之前我们介绍过用来列出变量值的levelsof命令,那怎么可以列出数据集中的变量名呢?这时候就需要引出findname命令。findname不仅可以用来列出当前数据集中的所有变量名,还可以列出具有指定特征的变量,而且findname命令具有返回值,方便我们后续对变量名进行调用。

2.命令安装及语法介绍

2.1 命令安装

初次使用findname时,需要进行安装,安装命令如下:

ssc install findname

在Stata中,findname命令的语法结构也比较简单,如下所示:

findname [varlist] [if] [in] [, options]

2.2 选项介绍

findname命令的选项有很多,这些选项分为五类,我们接下来先大致了解一下这些选项的作用。

display选项

  • alpha 输出时按字母顺序列出变量名;
  • detail 输出时显示更多细节,如变量格式、类型、标签等 ;
  • indent(#) 在输出变量名到结果窗口时,指定每行缩进的空格数;其中#代表空格数;
  • skip(#) 在输出变量名时设置每个变量之间的差距;默认的间距是skip(2)
  • varwidth(#) 输出时设置变量名的显示宽度;默认的宽度是varwidth (12),其中,#是变量宽度,其范围在5-32之间。

按变量类型、值和格式选择

  • type(typelist) 选择指定类型列表中的变量。比如:输入findname, type(string)将列出所有的名称数据集中的字符串变量,键入findname a*, type(string)将列出以字母a开头的字符串变量的所有名称;
  • type(patternlist) 显示格式与括号内 patternlist匹配的变量;
  • all(condition) 显示满足条件的所有变量;
  • any(condition) 显示满足条件的任何变量。

按变量和值标签选择变量

  • varlabel 选择具有定义变量标签的变量;
  • varlabeltext(patternlist) 选择变量标签匹配某种模式的变量;
  • vallabel 选择具有定义值标签的变量;
  • vallabelname(patternlist) 选择值标签名称匹配某种模式的变量;
  • vallabeltext(patternlist) 选择值标签内容匹配某种模式的变量。

按特征选择

  • char 选择具有定义特征的变量;
  • charname(patternlist) 选择特征名称与 pattrnlist匹配的变量;
  • chartext(patternlist) 选择特征内容与 pattrnlist匹配的变量。

control选项

  • insensitive  执行不区分大小写的模式匹配;
  • local(macname)  将变量名列表放在宏macname中;
  • not 列出不符合条件的变量名;
  • placeholder(symbol) 指定一个其他字符替代@,与 all(condition)any(condition)同时使用。

3.实例操作

经过上面的介绍,大家是不是觉得还是有些摸不着头脑?这么多选项,要怎么使用呢?别急,下面就带大家通过简单的auto数据,按照选项类型分别介绍几个简单的小例子,快速上手,利用findname进行数据分析~

首先我们先读入auto数据:

clear all //清空内存
sysuse auto  //读入auto数据
当我们直接输入findname命令时,就会在结果窗口显示出所有的变量名称。

3.1 设置变量在结果窗口的显示

利用display选项,我们可以设置变量在结果窗口中的输出格式。

我们执行findname, alpha,得到的变量名就是将变量首字母按照字母表进行顺序,排列显示在屏幕上,如下图所示:

findname, alpha
 

输入findname我们能看到所有变量的名称,如果需要变量的详细信息,我们可以输入findname, detail,显示变量的类型、格式、标签等信息:

findname,detail
 

alpha、detail 选项设置了变量在结果窗口显示的顺序、内容。那如果我们想设置变量的显示样式又该如何呢?这时我们可以使用indent(#)、skip(#)、varwidth(#)这些选项进行排版,让变量名按我们想要的格式进行输出。例如:

findname, indent(2) skip(6) varwidth(5) //设置显示变量名时每行缩进2,变量名之间的间距为6,变量名的显示宽度为5
 

3.2 按照类型、格式和值输出变量名

(1)按照变量类型输出变量名

在之前的推文中,我们介绍过变量类型的几种格式,分别有:numeric,string,byte,int,long,float,double等,在findname令中,就可以用type选项来筛选你需要的变量名。

findname, type(string) //显示数值型变量
findname, type(1/20) //显示变量类型为str1、str2、str3...str20的变量
findname, type(string) not //添加not选项,表示找到除string字符型类型的变量
 

以上只展示了几种简单的情况,大家可以将string换成其他类型,举一反三~

(2)按照变量格式输出变量名

format选项可以列出指定格式的变量,例如:

findname, format(*f) //显示出格式以f结尾的变量,可能是%#.#f, %0#.#f, 或者%-#
 

由于数据类型较多,这里就不再一一赘述,大家可以根据自己数据处理的需要来改变format()括号中的内容从而找到自己需要的变量。

(3)按照变量值输出变量名 

通过all(condition)any(condition)这两个选项,findname能够列出变量观测值满足某种条件(condition代表一种true或者false的状态)的变量名。

findname, all(@==0) //找到变量值全为0的变量,其中@代表变量名
findname, any(@==0) //找到变量值含有0的变量
 

这两个选项可以通过添加条件语句ifin来设置范围,比如:

findname in 1/50, all(@==0) //找到前50行中变量值全为0的变量

另外,placeholder(symbol)选项是为了配合all(condition)any(condition)这两个选项使用的。假设你的键盘@键坏了,可以设置其他占位符来替代@表示变量名。

findname, placeholder(#) any(#==0) //设置占位符#来替代

3.3 按变量标签和值标签输出变量名

varlabelvarlabeltext(patternlist)vallabel vallabelname(patternlist)选项可以通过变量标签或者值标签筛选变量,例如:

findname, varl //选择具有定义变量标签的变量
findname, vall //选择具有值标签的变量
findname, varl(Price) //选择变量标签为Price的变量
findname, vall(origin) //选择值标签为origin的变量
 

vallabeltext(patternlist)varlabeltext(patternlist)选项可以找到值标签和变量标签内容符合patternlist的变量,例如:

findname, vallabeltext(*n) //选择值标签以字母n结尾的变量
 

以上我们基本介绍了findname比较实用的选项,如果数据中的变量含有其它的定义特征,还可以添加char选项来筛选变量,用法和varlabel基本一致,大家可以动手试一试~

3.4 返回值

我们已经介绍了findname会将返回值保存在r(varlist)中,同时findname命令还有local()选项,可自定义局部宏名称,方便后续进行调用。我们看一下调用返回值的一个小例子:

findname,type(byte) local(bytevarlist) //选择字节型变量并把它们放在宏bytevarlist中
sum `r(varlist)
dis "`r(varlist)'
"       //此时该返回值被覆盖而不存在
di "
`bytevarlist'"      //而已经定义的局部宏不会被覆盖
 

以上就是findname的全部内容啦,大家在处理数据时可以活学活用,将多个选项一起使用,筛选需要的变量进行描述性统计或者回归等操作,期待大家留言交流哦!



星标⭐我们不迷路!
想要文章及时到,文末“在看”少不了!

点击搜索你感兴趣的内容吧


往期推荐


统计计量 | 在实证分析中,该如何解读“调节效应”或“交叉项”?(更新版)

统计计量 | 知乎热议:经济学专业博士如何学好高级计量?

数据治理 | 普通社科人如何学习SQL?一篇文章给您说明白

数据可视化 | 数据可视化,看这一篇就够了

数据治理 | 数据分析的 5 种细分方法

统计计量 | 固定效应+聚类标准误是面板数据标配吗?

数据资源 | 社会科学数据资源汇总






数据Seminar




这里是大数据、分析技术与学术研究的三叉路口


推荐 | 大魔仙


    欢迎扫描👇二维码添加关注    

点击下方“阅读全文”了解更多

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存