ilp*_*ipe 1 xml statistics r stata
我正在尝试将120mb的恐怖事件XML数据库(这里可以下载的第一个文件http://wits.nctc.gov/Export.do)转换为电子表格,以便我可以将其与其他数据合并并进行统计分析.
到目前为止,我一直在使用Stata,现在它没用,因为它不会读取XML.该网站按月提供较小的文件,可以通过excel打开,但excel不会以我想要的形式显示它们,应该有更好的方法来转换整个文件,而不是打开超过一百个单个文件,手动保存它们选项卡分开然后合并它们.
我正在寻找一种方法将完整的WITS.xml文件转换为电子表格,其中一行代表一个恐怖事件,并且不会丢失来自xml的信息.即使是结构不同的XML也可能没问题.我已经尝试过转换器,但它们要么不是免费的,要么不按我想要的方式执行,要么文件大小太大,我不知道如何使用xslt.我正在学习经济学,我的编程知识几乎不存在,这越来越成为一个缺点.我已经看到有一个我可以使用的R包,也许现在是开始学习R或其他语言的合适时机.但是,如果有一种快速简便的方法,我肯定会喜欢它.
一般而言,您似乎需要更多的XML概念帮助,而不是使用特定的R包和片段来处理XML文件(尽管这可能会在以后出现;-)).此外,您可能会发现在将输入文件用于R,Stata或其他统计工具之前,最好将输入文件转换为更可口的格式.
为了便于说明,我<incident>将在问题中提到的来源的第一条记录之下复制.我们可以假设其他事件将具有类似的结构.通过查看DTD文件,我们可以断言root是否包含其他节点("记录"),<incidents>以及这些事件是否具有完全相同的结构(或者,例如某些事件类型可能会说一个额外的<LocalWeatherConditions>节点,或者如果,例如,<facilityList>节点是可选的).出于本讨论的目的,可以假设所有事件记录具有相同的一般结构.
由于基数问题,您的" 电子表格中哪一行代表单个恐怖事件而且xml中没有信息应该丢失 "的请求可能很难实现.这是一种奇特的方式,可以说可以重复事件记录的某些子元素.例如,名称以"List"结尾的大多数节点通常可以包含多个子记录(BTW,"名称中的列表"不是XML规则,只是此特定数据库的保管人正在使用的约定) .例如,可能有多个<CityStateProvince>记录,每个记录都有自己的值,用于City和StateProvince,或者可能有多个`记录,每个记录都有很长的值列表.
可以将数据"展平"成一行.一般过程是"非规范化"之一,其中单行包括带有编号标签的列:
..., City1, StateProv1, City2, StateProv2, City3, StateProv3 ... (btw where do we stop?)
Run Code Online (Sandbox Code Playgroud)
此外,除了导致可能超出基础语言(绝对或实际)限制的广泛记录之外,这种格式在汇总和执行统计数据方面非常笨拙:假设您希望获得StateProv的计数:您现在需要指示程序"查看"找到此信息的所有可能位置:"StateProv1","StateProv2"......
另一种更适合统计处理的格式是导出到多个"电子表格".对于事件记录的所有不可重复属性,主电子表格每个事件包含一行,而其他电子表格包含可能重复的"子记录".这些子记录应包括一个"密钥",可用于与主电子表格中的基础记录(可能是ICN,这里)相关,它们还可能包含来自主电子表格的重复信息,例如引入IncidateDate这种非规范化[另一种]的目的是使这些额外的电子表格自足以进行一些有针对性的分析.
从哪里去?
幸运的是,你很快就可以完成这个转换/导入工作,并专注于手头的统计数据!
一些最后的指示:
即使您不易理解DTD语言,也请查看XTD文件,特别是<xs:enumeration ...>包含大量文件的许多列表,因为它们将为您提供因子(以R lingo为单位)的值.当然R也可以从数据中推断出这些,但您可以使用枚举中的信息进行交叉引用(以确认数据是先验加载的正确等)
可以从几个记录样本中推断出模式(不熟悉XML的人可以比XSD文件更容易理解XML数据).但是要确保需要读取XSD文件.
<IncidentList xmlns="http://wits.nctc.gov" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://wits.nctc.gov WITS.XSD">
<Incident>
<ICN>200458431</ICN>
<Subject>10 civilians killed, at least 45 wounded by suspected GAM in Peureulak, Indonesia</Subject>
<Summary>On 1 January 2004, in Peureulak, Aceh Province, Indonesia, a bomb exploded at a concert, killing ten civilians, wounding 45 others, and causing major damage to the stage area. Many of the victims were Indonesian teenagers. Police blamed the Free Aceh Movement (GAM), although the GAM denied responsibility. No other group claimed responsibility.</Summary>
<IncidentDate>01/01/2004</IncidentDate>
<ApproximateDate>No</ApproximateDate>
<MultipleDays>No</MultipleDays>
<EventTypeList>
<EventType>Bombing</EventType>
</EventTypeList>
<Assassination>No</Assassination>
<Suicide>No</Suicide>
<WeaponTypeList>
<WeaponType>Explosive</WeaponType>
</WeaponTypeList>
<IED>No</IED>
<Location>
<Region>East Asia-Pacific</Region>
<Country>Indonesia</Country>
<CityStateProvinceList>
<CityStateProvince>
<City>Peureulak</City>
<StateProvince>Aceh</StateProvince>
</CityStateProvince>
</CityStateProvinceList>
</Location>
<VictimList>
<Victim>
<VictimType>Civilian</VictimType>
<Combatant>No</Combatant>
<Nationality>Indonesia</Nationality>
<DefiningCharacteristicList>
<DefiningCharacteristic>None</DefiningCharacteristic>
</DefiningCharacteristicList>
<TargetedCharacteristicList>
<TargetedCharacteristic>Unknown</TargetedCharacteristic>
</TargetedCharacteristicList>
<Indicator>Targeted</Indicator>
<Child>No</Child>
<DeadCount>10</DeadCount>
<WoundedCount>45</WoundedCount>
<HostageCount>0</HostageCount>
</Victim>
</VictimList>
<FacilityList>
<Facility>
<FacilityType>Public Place/Retail</FacilityType>
<Combatant>No</Combatant>
<Nationality>Indonesia</Nationality>
<DefiningCharacteristicList>
<DefiningCharacteristic>None</DefiningCharacteristic>
</DefiningCharacteristicList>
<TargetedCharacteristicList>
<TargetedCharacteristic>Unknown</TargetedCharacteristic>
</TargetedCharacteristicList>
<Indicator>Targeted</Indicator>
<Damage>Light</Damage>
<Quantity>1</Quantity>
</Facility>
</FacilityList>
<PerpetratorList>
<Perpetrator>
<Nationality>Indonesia</Nationality>
<Characteristic>Secular/Political/Anarchist</Characteristic>
</Perpetrator>
</PerpetratorList>
</Incident>
[...]
</IncidentList>
Run Code Online (Sandbox Code Playgroud)