微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在使用列名而不是列索引加载数据集时定义变量类型?

如何解决如何在使用列名而不是列索引加载数据集时定义变量类型?

当我需要加载某些特定列必须作为字符串读取的数据集时,我键入:

import delimited "data.csv",stringcols(13 15 16)

其中 13、15 和 16 是我要作为字符串读取的数据集中的列数。但是,我通常事先不知道列的编号,如果能够使用列的名称执行相同的操作,那就太好了。

我试过了:

import delimited "data.csv",stringcols(var1 var2 var3)

但是 stringcols 不接受非数字参数。有没有办法使用列的名称而不是数字来指定列类型?

在 python 中,我可以使用:

df=pd.read_csv("data.csv",dtype={k:str for k in ["var1",'var2','var3']})

我正在 Stata 中寻找类似的方法

解决方法

我实际上经常遇到这个问题。正如 Nick 所说,当前版本的 import delimited 不支持变量名称。

一种解决方法是通过指定 stringcols(_all) 选项将所有列作为字符串导入,然后手动转换这些感兴趣的变量。

例如

import delimited data.csv,stringcols(_all) clear
destring var4 var5 var6,replace

如果你有一个很长的变量列表,并且想要 destring 除了说 var1 var2 var3 之外的所有变量,你可以使用 ds 命令(感谢 Nick 的建议):

import delimited data.csv,stringcols(_all) clear
ds var1 var2 var3,not //specify a list of variables to be excluded 
destring `r(varlist)',replace 

如果您正在处理大量非结构化 Excel 文件,您可能会发现 excelclean 命令很有用。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。