如何在使用列名而不是列索引加载数据集时定义变量类型?
How to define variable types while loading dataset using column names rather than column index?
当我需要加载其中某些特定列必须作为字符串读取的数据集时,我键入:
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 命令很有用。
当我需要加载其中某些特定列必须作为字符串读取的数据集时,我键入:
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 命令很有用。