使用Stata';s在多个变量块上保留命令
我刚开始研究一个有500万个观测值和很多很多变量的海量数据集。为了更快地处理这个问题,我只想选择一些感兴趣的变量,并去掉其余的变量 使用使用Stata';s在多个变量块上保留命令,stata,Stata,我刚开始研究一个有500万个观测值和很多很多变量的海量数据集。为了更快地处理这个问题,我只想选择一些感兴趣的变量,并去掉其余的变量 使用keep,我可以选择一个变量块,非常简单: keep varx1-x5 但是,我想要的变量在数据集中不是有序的: varx1 varx2 varx3 varz1 varz2 vary1 vary2 vary3 我不想要varz变量。我只想要带有varx和vary的块 所以。我不太擅长循环,但我试过: foreach varname of varlist v
keep
,我可以选择一个变量块,非常简单:
keep varx1-x5
但是,我想要的变量在数据集中不是有序的:
varx1 varx2 varx3 varz1 varz2 vary1 vary2 vary3
我不想要varz
变量。我只想要带有varx
和vary
的块
所以。我不太擅长循环,但我试过:
foreach varname of varlist varx1-varx3 vary1-vary3 {
keep `varname'
}
这不起作用,因为它只保留varx1
,然后尝试保留其他的而出错,因为它们刚刚被删除
如何让keep
选择多个变量块?请尝试drop
,它将仅删除您指定的变量,而不是使用keep
,它将清除未提供给命令的变量。循环不是必需的。例如:
clear
set obs 0
*----- example vars -----
gen varx1 = .
gen varx2 = .
gen varx3 = .
gen varz1 = .
gen varz2 = .
gen vary1 = .
gen vary2 = .
gen vary3 = .
*----- what you want -----
drop varz*
这两个命令都是联合记录的,因此帮助保留
或帮助删除
将使您达到目的。不要使用保留
,它将删除未提供给该命令的变量,请尝试删除
,它将仅删除您指定的变量。循环不是必需的。例如:
clear
set obs 0
*----- example vars -----
gen varx1 = .
gen varx2 = .
gen varx3 = .
gen varz1 = .
gen varz2 = .
gen vary1 = .
gen vary2 = .
gen vary3 = .
*----- what you want -----
drop varz*
这两个命令都是联合记录的,因此帮助保留
或帮助删除
将使您达到目的。不要使用保留
,它将删除未提供给该命令的变量,请尝试删除
,它将仅删除您指定的变量。循环不是必需的。例如:
clear
set obs 0
*----- example vars -----
gen varx1 = .
gen varx2 = .
gen varx3 = .
gen varz1 = .
gen varz2 = .
gen vary1 = .
gen vary2 = .
gen vary3 = .
*----- what you want -----
drop varz*
这两个命令都是联合记录的,因此帮助保留
或帮助删除
将使您达到目的。不要使用保留
,它将删除未提供给该命令的变量,请尝试删除
,它将仅删除您指定的变量。循环不是必需的。例如:
clear
set obs 0
*----- example vars -----
gen varx1 = .
gen varx2 = .
gen varx3 = .
gen varz1 = .
gen varz2 = .
gen vary1 = .
gen vary2 = .
gen vary3 = .
*----- what you want -----
drop varz*
这两个命令都是联合记录的,因此help keep
或help drop
将使您达到目的。如果您不知道要删除的所有变量,请仅保留带有varx
和vary
的块:
keep varx* varz*
*
表示前面表达式的“匹配零或多个”。如果您不知道要删除的所有变量,请仅保留带有varx
和vary的块:
keep varx* varz*
*
表示前面表达式的“匹配零或多个”。如果您不知道要删除的所有变量,请仅保留带有varx
和vary的块:
keep varx* varz*
*
表示前面表达式的“匹配零或多个”。如果您不知道要删除的所有变量,请仅保留带有varx
和vary的块:
keep varx* varz*
*
表示前面表达式中的“匹配零或多个”。此处所述的*
含义不正确。对于正则表达式来说这很好,但在这里它只意味着,例如,所有以varx开头的变量
都有其他后缀。例如:varx1
,varx2
,varxwhatever
。help varlist
中的引号是“匹配一个或多个字符”。(原海报希望保留varx*
和vary*
,而不是varz*
)。我没有想到那是多么愚蠢。非常感谢。*
所述含义在此上下文中不正确。对于正则表达式来说这很好,但在这里它只意味着,例如,所有以varx开头的变量
都有其他后缀。例如:varx1
,varx2
,varxwhatever
。help varlist
中的引号是“匹配一个或多个字符”。(原海报希望保留varx*
和vary*
,而不是varz*
)。我没有想到那是多么愚蠢。非常感谢。*
所述含义在此上下文中不正确。对于正则表达式来说这很好,但在这里它只意味着,例如,所有以varx开头的变量
都有其他后缀。例如:varx1
,varx2
,varxwhatever
。help varlist
中的引号是“匹配一个或多个字符”。(原海报希望保留varx*
和vary*
,而不是varz*
)。我没有想到那是多么愚蠢。非常感谢。*
所述含义在此上下文中不正确。对于正则表达式来说这很好,但在这里它只意味着,例如,所有以varx开头的变量
都有其他后缀。例如:varx1
,varx2
,varxwhatever
。help varlist
中的引号是“匹配一个或多个字符”。(原海报希望保留varx*
和vary*
,而不是varz*
)。我没有想到那是多么愚蠢。非常感谢。谢谢你的回复。但是,对我的数据使用drop不是一个选项。我给出的例子是我必须处理的大量变量的一个非常简单的版本。因此,下降的过程非常低效。选择/保留:)更有意义。你有证据支持这个断言吗?无论您询问想要的变量还是不想要的变量,数据集的结果都是一样的。为什么你认为这对斯塔塔很重要?对不起,我从来没有看过你的帖子,现在我想不出我的理由了。那时候我是一个头脑发热的年轻人。谢谢你的回复。但是,对我的数据使用drop不是一个选项。我给出的例子是我必须处理的大量变量的一个非常简单的版本。因此,下降的过程非常耗时