Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.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
Split 如何使用重塑或其他函数修复此数据_Split_Stata_Reshape - Fatal编程技术网

Split 如何使用重塑或其他函数修复此数据

Split 如何使用重塑或其他函数修复此数据,split,stata,reshape,Split,Stata,Reshape,我有一些数据,这些数据结合了一些具体的条目。如果每个县都应该在该列表中单独列出,则这些条目都放在同一行。我使用了split将这些数据分为county1等,但我试图找出如何使用重塑或其他函数保留所有数据,但将县、county1等更改为对县的单独观察。我想在不丢失其他条目的情况下从宽到长移动 utility_name state county unique_id Alaska Village Elec Coo

我有一些数据,这些数据结合了一些具体的条目。如果每个县都应该在该列表中单独列出,则这些条目都放在同一行。我使用了
split
将这些数据分为
county1
等,但我试图找出如何使用
重塑
或其他函数保留所有数据,但将
county1
等更改为对
的单独观察。我想在不丢失其他条目的情况下从宽到长移动

utility_name                    state   county                          unique_id
Alaska Village Elec Coop, Inc   AK      Borough, Kodiak Island          221AK
Wolverine Pwr Supply Coop, Inc  MI      Allegan, Antim, Barry, Benzie,  20910MI
Wolverine Pwr Supply Coop, Inc  MI      Clinton, Eaton, Emmet, Gratiot  20910MI
Wolverine Pwr Supply Coop, Inc  MI      Grand Traverse, Ingham, Ionia   20910MI
Wolverine Pwr Supply Coop, Inc  MI      Isabella, Lake, Leelanau        20910MI
Wolverine Pwr Supply Coop, Inc  MI      Manistee, Mason, Mecosta,       20910MI
Wolverine Pwr Supply Coop, Inc  MI      Missaukee, Montcalm, Muskegon   20910MI
Wolverine Pwr Supply Coop, Inc  MI      Newaygo, Oceana, Osceola            20910MI
Wolverine Pwr Supply Coop, Inc  MI      Ottawa, Alpena, Charlevoix      20910MI
Soyland Power Coop Inc          IL      McDonough, McCoupin             40307IL
Soyland Power Coop Inc          IL      Menard, Morgan,Montgomery       40307IL
Soyland Power Coop Inc          IL      Sangamon,Schuyler,Scott,Pike        40307IL
这将成为

Alaska Village Elec Coop, Inc    AK Borough    221AK
Alaska Village Elec Coop, Inc    AK Kodiak Island    221AK

等等。

这个问题似乎是以对美国各州的一些了解为前提的:在国际论坛上多做一点解释是不会出错的

重塑
是Stata中的命令,而不是函数。但这两种方式都不必在这里适用。你似乎想要这样的东西

由于县的名称在一个复合变量中用逗号分隔,因此县的数目是逗号数加1。我们通过概念上删除逗号并找到字符串长度的减少来计算逗号。如果我们看到整个数据集,其中一些代码是可以避免的,这可能是不切实际的

gen long id = _n 
gen ncounties = length(county) - length(subinstr(county, ",", "", .)) + 1 
expand ncounties 
bysort id : gen id2 = _n 
su ncounties, meanonly 
gen County2 = "" 
forval j = 1/`r(max)' { 
     replace County2 = county`j' if id2 == `j' 
} 

简言之,主要设备是使用
扩展
复制每个观察结果,但复制的数量取决于每个观察结果中包括多少个县

如果我理解正确的话,您想要的是:

clear
set more off

input ///
str40 utility_name str2 state   str40 county                      str15 unique_id
"Alaska Village Elec Coop, Inc"   "AK"      "Borough, Kodiak Island"          "221AK"
"Wolverine Pwr Supply Coop, Inc"  "MI"      "Allegan, Antim, Barry, Benzie,"  "20910MI"
end

split county, parse(",")
rename county origcounty

gen i = _n
reshape long county, i(i)
drop if missing(county)

order origcounty, last
list i - county

你能说一下你的
整形有什么问题吗?似乎标准程序适用于
拆分后的
。计数
ncounties
需要根据尾随逗号的情况进行调整(例如,示例数据的观察2)。没有提到,但我想这个解决方案的前提是使用
split
。如果不使用
generate()
选项,它将创建一个
county2
变量,与
gen county2=“”
冲突,因此
gen
语句中的
county2
应命名为其他名称,例如
countyfinal
。这是正确的吗?@RobertoFerrer感谢您提供的详细信息。我已固定到
County2
。这确实假设先前使用了问题中提到的
split
,这样做很完美。非常感谢。