【问题标题】:How to define variable types while loading dataset using column names rather than column index?如何在使用列名而不是列索引加载数据集时定义变量类型?
【发布时间】:2021-02-07 20:27:32
【问题描述】:

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

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中寻找类似的方法。

【问题讨论】:

  • 这似乎不是这样的选择。 import delimited 的主要目标是代表您变得聪明,之后可以使用 destringtostring 修复错误。

标签: stata


【解决方案1】:

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

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

例如,

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

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

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 命令很有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-13
    • 2013-11-23
    • 2011-08-04
    • 2022-08-19
    • 2017-11-22
    • 2013-04-17
    • 2019-10-26
    相关资源
    最近更新 更多