excel - 用 stata 循环填充输出向量

标签 excel loops foreach stata percentile

例如,当您在 Stata 中获取变量的百分位数时。

    *set directory
    cd"C:\Etc\Etc Etc\"
    *open data file
    use "dataset.dta",clear
    *get centiles
    centile var1, centile(1,5(5)95,99)

有没有办法将生成的百分位表记录到Excel中?百分位值存储在 r(c_#) 中,其中 # 表示您想要数据所在的百分位。但我需要所有百分位数的值向量,或多或少与输出窗口中显示的值相同。

我尝试使用 foreach 循环将百分位数转换为向量,如下所示:

    *Create column of centiles
    foreach i in r(centiles) {
    xx[1,`i']=r(c_`i')
    }

没有成功。

谢谢

编辑:

我后来发现这很有效:

   matrix X = 0,0 
   forvalues i=1/21  { 
   matrix X = `i',round(r(c_`i'),.001)\ X
   }

唯一的不便是 1) 我必须在输出中包含第一行 0,0,然后我将删除它。 2) 在本例中,我有 21 个百分位,但如果我想更改它,最好能自动计算百分位数,例如如下所示:

   forvalues i=1/r(n_cent)  { 
   matrix X = `i',round(r(c_`i'),.001)\ X
   }

但是“i=1/r(n_cent)”是无效语法。任何有关我如何克服这两个不便的建议将不胜感激。

谢谢

最佳答案

您可以使用以下语法。

加载一些数据并计算百分位数。

sysuse auto, clear
centile price, centile(1,5(5)95,99)

必须初始化应该包含结果的矩阵。该矩阵称为X。它的行数与通过 centile 命令请求的百分位数一样多。它有两列。在此阶段,矩阵中填充有零。

matrix X = J(`=wordcount("`r(centiles)'")', 2, 0)

以下循环逐步执行centile 命令的结果,并用适当的结果替换矩阵X 中的零。矩阵的第一列包含百分位数 (1, 5, 10, ...),第二列包含结果

forvalues i = 1 / `=wordcount("`r(centiles)'")' {
    local cent: word `i' of `r(centiles)'
    matrix X[`i', 1] = `cent'
    matrix X[`i', 2] = r(c_`i')
}

打印结果:

matrix list X

关于excel - 用 stata 循环填充输出向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10096296/

相关文章:

vba - 使用基于两列的 VBA 删除重复项 - Excel 2003

C循环读取输入行

PHP摩尔斯电码转换器

Java:使用文件读取器在 while 循环中添加到字符串数组

c# - 从其他类使用 GetEnumerator 时如何处理 foreach null 异常?

for-loop - 内联 for 循环如何与打印交互?

excel - 从 Web 服务器保存 Excel 文件时如何解决 [1] IE 错误?

C# 系统对象[,]

javascript - 将 nodeList 元素分组到单独的组中

Java日期到Excel日期表示