【发布时间】:2020-01-02 12:31:52
【问题描述】:
我有一个带有 xml 导出的数据框,我想查找 ceratin 字符串并从中返回两个值。下面是我的数据样本的代码。
a <- c(
'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><businessObjectChanges version="1"><table><datetime>1500977276442</datetime><name>XX_header</name><row><datetime>1500977276442</datetime><transactionType>UPDATE</transactionType><column><name>est_groundtime</name><newValue>420</newValue><oldValue>480</oldValue><mimeType>TIME</mimeType></column><column><name>start_time</name><newValue>540</newValue><oldValue>480</oldValue><mimeType>TIME</mimeType></column><column><name>XXno_i</name><primaryKey>true</primaryKey><newValue>11</newValue><oldValue>11</oldValue></column></row></table></businessObjectChanges>',
'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><businessObjectChanges version="1"><table><datetime>1500977363880</datetime><name>XX_header</name><row><datetime>1500977363880</datetime><transactionType>UPDATE</transactionType><column><name>end_time</name><newValue>922</newValue><oldValue>960</oldValue><mimeType>TIME</mimeType></column><column><name>XXno_i</name><primaryKey>true</primaryKey><newValue>11</newValue><oldValue>11</oldValue></column></row></table></businessObjectChanges>',
'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><businessObjectChanges version="1"><table><datetime>1500977598476</datetime><name>XX_header</name><row><datetime>1500977598476</datetime><transactionType>UPDATE</transactionType><column><name>act_start_date</name><newValue>16642</newValue><oldValue>null</oldValue><mimeType>DATE</mimeType></column><column><name>act_start_time</name><newValue>607</newValue><oldValue>0</oldValue><mimeType>TIME</mimeType></column><column><name>act_end_date</name><newValue>16642</newValue><oldValue>null</oldValue><mimeType>DATE</mimeType></column><column><name>act_end_time</name><newValue>667</newValue><oldValue>0</oldValue><mimeType>TIME</mimeType></column><column><name>delay</name><newValue>7</newValue><oldValue>0</oldValue><mimeType>TIME</mimeType></column><column><name>XXno_i</name><primaryKey>true</primaryKey><newValue>205</newValue><oldValue>205</oldValue></column></row></table></businessObjectChanges>',
'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><businessObjectChanges version="1"><table><datetime>1500977613945</datetime><name>XX_header</name><row><datetime>1500977613945</datetime><transactionType>UPDATE</transactionType><column><name>XX_status</name><newValue>-2</newValue><oldValue>18</oldValue><mimeType>INT</mimeType></column><column><name>XXno_i</name><primaryKey>true</primaryKey><newValue>205</newValue><oldValue>205</oldValue></column></row></table></businessObjectChanges>',
'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><businessObjectChanges version="1"><table><datetime>1500977892448</datetime><name>XX_header</name><row><datetime>1500977892448</datetime><transactionType>UPDATE</transactionType><column><name>XX_status</name><newValue>19</newValue><oldValue>-2</oldValue><mimeType>INT</mimeType></column><column><name>XXno_i</name><primaryKey>true</primaryKey><newValue>29</newValue><oldValue>29</oldValue></column></row></table></businessObjectChanges>',
'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><businessObjectChanges version="1"><table><datetime>1500977738390</datetime><name>XX_header</name><row><datetime>1500977738390</datetime><transactionType>UPDATE</transactionType><column><name>act_start_date</name><newValue>16641</newValue><oldValue>null</oldValue><mimeType>DATE</mimeType></column><column><name>act_start_time</name><newValue>367</newValue><oldValue>0</oldValue><mimeType>TIME</mimeType></column><column><name>act_end_date</name><newValue>16641</newValue><oldValue>null</oldValue><mimeType>DATE</mimeType></column><column><name>act_end_time</name><newValue>667</newValue><oldValue>0</oldValue><mimeType>TIME</mimeType></column><column><name>XXno_i</name><primaryKey>true</primaryKey><newValue>44</newValue><oldValue>44</oldValue></column></row></table></businessObjectChanges>',
'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><businessObjectChanges version="1"><table><datetime>1500977757374</datetime><name>XX_header</name><row><datetime>1500977757374</datetime><transactionType>UPDATE</transactionType><column><name>XX_status</name><newValue>19</newValue><oldValue>18</oldValue><mimeType>INT</mimeType></column><column><name>XXno_i</name><primaryKey>true</primaryKey><newValue>44</newValue><oldValue>44</oldValue></column></row></table></businessObjectChanges>',
'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><businessObjectChanges version="1"><table><datetime>1500977836229</datetime><name>XX_header</name><row><datetime>1500977836229</datetime><transactionType>UPDATE</transactionType><column><name>act_start_date</name><newValue>16640</newValue><oldValue>null</oldValue><mimeType>DATE</mimeType></column><column><name>act_start_time</name><newValue>96</newValue><oldValue>0</oldValue><mimeType>TIME</mimeType></column><column><name>act_end_date</name><newValue>16640</newValue><oldValue>null</oldValue><mimeType>DATE</mimeType></column><column><name>act_end_time</name><newValue>156</newValue><oldValue>0</oldValue><mimeType>TIME</mimeType></column><column><name>XXno_i</name><primaryKey>true</primaryKey><newValue>203</newValue><oldValue>203</oldValue></column></row></table></businessObjectChanges>'
)
a <- as.data.frame(a)
我的数据框“a”需要两列。第一个是基于关注XX_status,第二个是再次关注XX_status。
所以,第 1 到第 3 行不包含 XX_status 所以对他们来说任何东西,第 4 行有它与下面的摘录,它将是 -2 和 18,对于第 5 行,它将是 18 和 2 等等...
任何想法将不胜感激
【问题讨论】: