我想将所有文件从一个文件夹复制到Stata中的另一个文件夹。
我使用了以下代码:
local dlist: dir "$dir" dirs "*"
foreach d of local dlist {
local file: dir "$dir\"`d'"" files "*.dta"
foreach f of local file{
copy `f' "$dir/PROGRAMMATION/INITIALES"
}
}
然而,Stat
我有一个文件夹,里面有.csv文件,总大小为6 GB。我想在Stata中自动插入这个文件夹中的所有数据。
在网上搜索,我找到了一些解决方案,比如:
cd "E:\myfolder"
. insheet using "file1.csv"
. save "a", replace
. local satafiles: dir . files "*.csv"
. foreach file of local satafiles {
2. append using "a"
3. save "myfi
我正在尝试根据其他变量的数学表达式在我的数据中为每一年创建一个变量(我有年度数据,并使用"...“以避免每年都要写作)。我在Stata中使用summarize命令提取标准差,但Stata无法识别frac变量。我曾尝试使用egen,但这导致了未知的函数错误。使用gen会产生一个已经定义的变量。我将感谢任何人帮助以下代码或指向我的链接,这个问题已经讨论过。
foreach yr of numlist 1995...2012 {
local row = `yr' - 1994
local numerator = 100*(inc
我有一个包含18个.csv文件的目录。我想在清理数据和附加所有数据之前将它们全部转换为.dta。这是我到目前为止所拥有的代码: cd "/Volumes/Extreme SSD/secure/TQIP/2007/PUF AY 2007/CSV"
mkdir "stata"
clear
local myfilelist : dir . files"*.csv"
foreach file of local myfilelist {
drop _all
insheet using "`file'", comm
原始数据。我的数据集的文件有~281.000列,我需要转移到Stata和重塑。按照上述建议,作为对我以前帖子的回复,我尝试使用insheet命令,拆分和重组数据块,并将它们附加起来。当前“玩具”版本的代码如下所示:
insheet using "D:\Trial_Import\products_4_3_2.dat", comma clear
// extract vars
tempfile orig 1 2 3
save `orig'
keep simulation v2-v12
save `1'
use `orig'
keep simulat
我听说CSV对文本数据最好,numpy对数值/浮点数据最好。但是我的熊猫数据有文本和浮点数。
我正在查看Pandas中可用的所有数据存储格式。
text CSV read_csv to_csv
text JSON read_json to_json
text HTML read_html to_html
text Local clipboard read_clipboard to_clipboard
binary MS Excel read_excel to_excel
binary HDF5 Format read_hdf
为什么这段代码不能在Stata中运行?它给我的错误是:
* invalid name
但是,当我使用
sexd1 sexd2
而不是
sexd*
它工作得很好。当我在Stata的命令框中输入命令时,sexd*作为本地程序工作得很好。
代码如下:
local list_of_variables weight midpoint_hhinc
tabulate sex, gen(sexd)
local sexd sexd*
foreach i in `list_of_variables'{
foreach j in `sexd'{
gener
我希望在Stata中有一个if条件,它只在某个变量的名称包含在local中时才运行该变量的大括号中的代码。例如。
if (`variable` element of `variablenames_local`) {
gen variable2 = variable + 2
}
在Stata中如何做到这一点?
我有一套18个Stata数据文件(每年一个),它们的名字是:
{aindresp.dta, bindresp.dta, ... , rindresp.dta}
我想从每个数据集中删除一些变量。为此,我想使用的事实是,数据集中的许多变量具有相同的名称,加上数据集前缀(a、b、c、.r)。例如,变量rach12在dataset aindresp.dta中称为arach12。因此,为了清理每个数据集,我运行了一个循环,如下所示:
clear all
local list a b c d e f g h i j k l m n o p q r
foreach var of local list {
u
原始问题
在工作中导入大型数据集时,我注意到一些意想不到的行为,在使用append命令时,Stata似乎“忘记”了一个本地宏。
这似乎更加奇怪,因为这似乎是一个特定于这一个命令的现象(我用save进行了测试,代码按预期的方式工作)。
*****************
** SET UP
******************
local datasets "auto.dta auto2.dta"
global data "/Users/Seansmac/Desktop/stata_question"
save "$data/test_data.dta
1)可以在stata中创建字符串的向量吗? 2)如果可以,那么是否可以遍历该向量中的元素,对每个元素执行命令?
要在stata中创建一个单独的字符串,我知道您会这样做:
local x = "a string"
但我需要遍历大约200个数据文件,它们不能方便地使用连续的后缀命名,如"_2000“、"_2001”、"_2002“等。事实上,文件名没有韵律或原因,但我有一个它们的列表,我可以很容易地剪切并粘贴到一个字符串向量中,然后逐个调用这个向量的元素,就像在MATLAB中可能做的那样。
在stata中有没有办法做到这一点?
我有一些调查数据,我正在使用Stata进行分析。我想按组计算一个变量的平均值,并将这些平均值保存到Stata文件中。我的代码如下所示:
svyset [iw=wtsupp], sdrweight(repwtp1-repwtp160) vce(sdr)
svy: mean x
我试过了
svy: by grp: mean x
但这并不管用。我可以简单地将每个均值保存到一个单独的文件中
svy: mean x if grp==1
但这是低效的。有没有更好的方法?
可以使用SAS ODS将结果保存到文件中也是一种需要。我在这里不是在谈论日志。我需要手段和相关的小组。我在想
estimates sav
我的Stata代码的开头是:
local MyState "[STATE ABBREVIATION]"
用户输入州缩写(例如,"FL"),然后运行代码。其余代码多次引用MyState。例如:
keep if stateabb == `"`MyState'"'
replace Goal = .95 if stateabb == `"`MyState'"'
save "Results for `MyState'.dta", replace
if (stateabb == `
我正在学习Stata编程与这本书,介绍Stata编程,第二版。
在第4章中,有一个用于测试其他变量是否满足逻辑条件的generate代码,代码如下:
foreach v of varlist child1-child12{
local n_school "`n_school' + inrange(`v', 1, 5)"
}
gen n_school = `n_school'
当我修改这个代码以适应我自己的数据时,
foreach v of varlist qp605_s_1-qp605_s_5 {
loca
Stata版本: 12.1
我得到一个错误的“文件找不到”使用以下代码:
cd "$path_in"
insheet using "df_mcd_clean.csv", comma clear
append using "df_mcd15_clean.csv" #where error happens
append using "df_ingram_liu1998_clean.csv"
append using "df_wccd_clean.csv"
我再次检查了该文件是否确实被称为该文件
对于几个国家,我有一个数据集,我希望为每个国家保留一个变量列表(在全局vlist中指定)。有些国家不存在一些变数。
我希望Stata忽略这些变量的不存在性,并为其余的变量执行keep命令。然而,问题是在国家一级的额外的for循环,这是我正在努力整合的。
这个问题类似于在这些线程中提出的问题:
最终,我希望为每个只有在vlist中指定的变量(减去vlist中不存在的变量)的国家提供一个数据集。
下面是代码,主要摘自上面的线程:
clear all
set obs 5
local vlist v0 v1 v2 v3 v4 v5
foreach v of local vlis
我一直试图将最初从merge导入的三个Stata文件与6个字符串ID代码(例如n5fpeb)合并,但没有成功。它们作为str6变量存储在Stata数据文件中。
我还记录了一些其他变量,这些变量也识别了每个观察结果--一个数字参与者ID和一个学校ID编号,因为每个参与者都是学生。我的主数据集是堆叠格式的,因为我的数据是纵向的。当我尝试1:m合并(即merge 1:m id using "C:\Users ... May.dta", generate(_merge1))时,Stata返回以下错误消息:variable id does not uniquely identify ob
我正在用相同的函数形式估计Stata中的几个回归。我想通过循环遍历包含用于回归的“程序”的.do文件来执行我的估计。我尝试过的(简化)代码如下:
local vars waz haz whz cough fever diar
foreach depvar of local vars {
forvalues i = 10(5)15 {
do "Regression.do"
}
}
"Regression.do“是这样的代码:
reg `depvar' distance_`i'
est store `depvar'_`i'
Stata返
我正在学习如何第一次用Stata编写程序,而且我很难概括我的程序,以便在数据集中重命名变量时,我可以解析一个任意的变量列表。
我在处理两个数据集。第一个是包含受访者26年生活满意度的面板数据集(与我上一个问题中的数据集相同)。变量最初是以这种格式命名的:ap6801、bp9301、cp9601以及一直到zp15701。ap6801包含了1985年的生活满意度,bp9301包含了1986年的生活满意度,等等。
我编写了下面的程序来重命名变量,所以不是ap6801,而是lsat1985。
program myprogram
local mcode 1984
foreach stub in a b
我试图为1996年至2012年(包括在内)每年生成一个虚拟变量,这样,如果是1996年,则1996年的虚拟变量应该等于1,如果其他情况下使用Stata中的foreach命令来减少时间(至少对于未来的项目),则等于0。目前正在发生的情况是,正在制作1996年的假人,但没有产生其他的假人。我认为这与我如何定义j有关,但我无法完全确定格式以实现我想要的结果。我已经在网上和在Stata帮助文件中查找过任何关于这个特定主题的内容。
以下是我到目前为止所拥有的:
local var year
local j = 1996
foreach j of var year {
gen d`j' =
我正在尝试创建相关矩阵,它还包括每个变量的均值和标准差。 ** Set variables used in Summary and Correlation
local variables relationship commission anxiety enjoyment negotiation_efficacy similarity_values similarity_behaviors SPT_confidence own_SPT_effort
** Descriptive statistics
estpost summarize `variables'
matrix ta
我必须导入和修改大量的csv文件。在此过程中的某个时候,我希望使用以下代码
local vlist materialcost* costofemployees* city country
foreach v in vlist{
capture drop `v'
}
但是,如果我尝试,当地人也不允许像materialcost*这样的开放式描述。
foreach v of var materialcost* costofemployees* city country {
capture drop `v'
如何在stata中输出一个本地值,我正在使用下面的命令,但它在Stata 12中给出了一个错误variable local not found
sysuse auto
summ price,de
outsheet local p1 local p99 using "range\range.csv", replace c
我也试过
outsheet r(p1) r(p99) using "range\range.csv", replace c
但误差factor variables and time-series operators not allow
我正在使用Stata IC 13,需要对大型dataset.The问题的不同变量进行不同类型的分析,因为我的数据集非常大,所以我得到了以下错误
这个版本的Stata允许多达2,048个变量。
有没有办法命名您想要导入的变量来解决这个问题(使用Stata,而不是其他程序)?
我需要一种灵活的方式,通过变量名导入变量,而不是将原始数据集拆分到许多小子集中。我听说过,但是我对Stata还比较陌生,所以如果有人能向我展示他们每天如何克服这个限制的代码示例,我将非常感激。
让我们举个愚蠢的例子。假设我只想从这个数据集中导入已削减的变量和公共变量。
use http://www.ats.ucla.
我有如下的局部变量x1 , x2, and x3
local x1 2 3 5
local x2 5 9 7
local x3 1 3 4
现在我将local x定义为
local x `x1' `x2' `x3'
接下来,我将for循环定义为
foreach var of varlist `x'{
reg y `var'}
问题是stata给了我这个错误(注意y是因变量)
invalid name
在这方面的任何建议都将受到高度赞赏。
这个问题纯粹是出于对知识的好奇心。
在比较频繁地浏览了Python部分之后,我看到了许多类似于的问题,其中有人要求以编程的方式定义全局变量。他们中的一些人意识到了exec的陷阱,另一些人则不知道。
然而,我最近一直在使用Stata进行编程,其中以下情况很常见:
local N = 100
local i = 1
foreach x of varlist x1 - x`N' {
local `x' = `i' * `i'
++i
}
在Stata术语中,创建了一个名为N的本地宏,并且N的计算结果为100。在foreach循环的每次迭代中,都会将
我有大数据集的一部分。许多变量包含值标签,但这些值在数据集的这一部分中不存在。我想从数据集中删除多余的值标签。我试图使用各种方法在Stata中做到这一点,但没有成功。
显然,这是行不通的:
label drop X if X == 1
补充文本:到目前为止,我提出了以下解决方案,这些解决方案并不完美,因为我需要在今后一次又一次地重复这一练习:
第一次(半手动):
fre var
di r(lab_valid);
label drop var;
label define var 1 "Label 1" 2 "Label 2" 3 "label 3"
我想循环遍历Stata中字符串变量的特定子集向量。我有一个数据集,比如:
id country effect period
1 US 0.20 2
2 US 0.25 3
3 Japan 0.37 2
4 Germany 0.22 3
5 US 0.11 3
6 Japan 0.43 1
7 Ireland 0.30 1
...
我不想遍历国家变量的所有值,而是只遍历特定的值,例如美国和日本。我试过了:
levelsof country if country==