Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Stata中使用时间序列运算符将丢失的观测值替换为以前的值时,类型不匹配_Stata - Fatal编程技术网

在Stata中使用时间序列运算符将丢失的观测值替换为以前的值时,类型不匹配

在Stata中使用时间序列运算符将丢失的观测值替换为以前的值时,类型不匹配,stata,Stata,考虑下面的例子。我从一个str6“name”变量开始,每隔一年观察两个实体一年 clear input str6 nameStr year "A" 2002 "A" 2004 "A" 2006 "B" 2002 "B" 2004 "B" 2006 end 然后我使用tsfill来平衡面板: egen id = group(nameStr) xtset id year tsfi

考虑下面的例子。我从一个
str6
“name”变量开始,每隔一年观察两个实体一年

clear
input str6 nameStr year
"A" 2002
"A" 2004
"A" 2006
"B" 2002
"B" 2004
"B" 2006
end
然后我使用
tsfill
来平衡面板:

egen id = group(nameStr)
xtset id year
tsfill
数据集现在是:

input str6 nameStr year id
"A" 2002 1
""  2003 1 
"A" 2004 1
""  2005 1
"A" 2006 1
"B" 2002 2
""  2003 2 
"B" 2004 2
""  2005 2 
"B" 2006 2
end
现在,我可以使用类似的东西来填充缺少的字符串标识符。或者,根据时间序列变量列表的相关和文档(
help tsvarlist
),我希望以下内容可以填充
nameStr
的值:

sort id year \\ not required because the data are still sorted from xtset and tsfill
replace nameStr = nameStr[_n-1] if mi(nameStr) &  id[_n-1] == id
确实如此

但是,我也希望下面的代码会产生相同的行为,但事实并非如此

replace nameStr = l.nameStr if mi(nameStr)
相反,斯塔塔返回:

type mismatch
r(109);

虽然有几种方法可以解决这个问题(我列出了两种),但我很想了解为什么会发生这种情况。大多数类似的讨论都涉及涉及两个不同类型的变量的情况,这里显然不是这种情况,因为只涉及一个变量。

Stata不允许将时间序列运算符应用于字符串变量。如果您仔细考虑一下,您会发现前面的(滞后)和后面的(前导)字符串值是有意义的,但差异并没有,至少没有那么大。区别的唯一简单解释是二进制,即两个时间段的字符串相同或不同

因此,Stata并不意味着不能为任何面板使用其他字符串值;它只是不支持使用时间序列操作符对字符串进行计算


除了您在SSC中提到的
stripolate
语法外,还支持字符串插值:请参见。

,因为
l.nameStr
符号不适用于字符串。要了解这一点,请将
nameStr
中的
A
B
替换为
1
2
,然后再次运行代码。很有趣,因此,问题是试图对字符串变量执行数字操作。奇怪的是,我以前从未尝试过(也没有尝试过)这样做。@PearlySpiner这个限制是否有文档记录(我在中没有看到)?这在数据操作上下文中是有意义的,这就是为什么我认为StataCorp程序员在这里做出了价值判断。啊,是的。差分肯定是对字符串进行数字运算。