在compress
我的数据之后,我有几个字符串变量,其存储类型为str4
或str1
,格式为%9s
。我想将它们全部恢复为默认显示格式,help dformat
%#s
报告应为str#
ds, has(type string)
foreach v of varlist `r(varlist)' {
format `v'
}
。有快速的方法吗?
这是我最好猜测的结构:
format
这不起作用,因为clear
input str50 mystr
"b"
"a"
end
compress
format myst
函数不是使用此命令重新格式化为默认值,而是显示格式。
可重现的例子:
strL
这是我遇到的情况。我不确定它是否适用于browse
格式化变量。 (罗伯托怀疑它没有;见评论。)
附录。我的目标是让format
- 更容易理解我的数据。似乎{{1}}在浏览器中受到尊重(例如,截断为%1s的长度),而在打印到控制台时,它会被字符串的实际长度覆盖。
答案 0 :(得分:3)
我很惊讶您似乎感到惊讶,因为您的语法format
命令(不是函数)确实只显示格式,如文档所述。顺便说一句,您不需要循环来执行此操作,因为format
将 varlist 作为参数:
. clear
. set obs 1
obs was 0, now 1
. foreach t in a b c {
2. gen `t' = "`t'"
3. }
. format a b c
variable name display format
-----------------------------
a %9s
b %9s
c %9s
-----------------------------
> Joshing分开,我认为你这里只需要一行,就像
. format a b c %1s
或
. format a b c %-1s
表示哪种理由。 Stata不会因为它们与字符串显示格式不匹配而截断显示的字符串。它可能会截断字符串,因为没有空间来显示它们,但是(我自然会打开反例)上述变量的显示格式对于大多数用途都会很好。
编辑:以下设备可能有所帮助。
gen length = 0
ds, has(type string)
quietly foreach v in `r(varlist)' {
replace length = length(`v')
su length, meanonly
format `v' %`r(max)'s
}
drop length