Введение в данные
У меня есть текстовый файл документа или CSV, который содержит код с веб-сайта, где я не мог экспортировать данные в лист Excel.Это означает, что сами данные представляют собой набор кода, в котором элементы различаются по определенным частям текста.
Понимание данных
Fx.Каждый вариант начинается с <a:FN>
.у каждого элемента в varaible, x, есть код, который начинается с <a:DT>...
, а у y есть код, который начинается с <a:KY>...
, где значение для этого элемента начинается с <a:VL>
.Кодирование для каждой переменной, а также базовый код, связанный с этой переменной, начинается с <a:PLI>
.
Структура данных
So the structure of the file is as following:
`<a:PLI>`
<a:DT>...
`<a:FN>...`
`<a:KY>...`
<a:VL>...
`<a:PLI>`
<a:DT>...
`<a:FN>...`
`<a:KY>...`
<a:VL>...
При импорте в R, кадр данных имеет только 1 столбец и всего ок.35 000 строк.Каждый бит кода имеет свою строку.
Что я хочу сделать и ожидаемый результат
Что я хочу сделать, это преобразовать этот сложный текстовый файл в новый фрейм данных, содержащий все элементы, которыми я являюсьинтересует.
Например, для каждой группы / переменной (a<:FN)
я хочу найти X (<a:DT>)
, где я затем хочу найти Y (<a:KY>org-key</a:KY>)
и Z (<a:VL)
для клавиши org.Я хочу сделать это для всех X во всех группах / переменных, что приводит к выводу, где каждый X сгруппирован с соответствующими значениями Y и Z.
Я не уверен, как решить мой вопрос.Я думал, что цикл for может быть подходящим, или использовать что-то из семейства apply, например, sapply.Честно говоря, я не уверен, с чего начать, поэтому я обращаюсь.
То, что я предполагал сделать, - это настроить функцию, которая описывает, что именно я хочу сделать:
bespoke <- function (x) {
find x in df ## X could be one of the varaibles I am looking for
find y after x ## Find y for x in df
find z after x ## find z for x in df
return all elements to a df ## I wnat to repeat this function for all variables in df.
}
df2 <- adply(keys, bespoke)
Я не привык работать с функциями, поэтому я неЯ действительно не знаю, с чего начать, также потому, что у меня есть несколько основных критериев для моей функции, которым я хочу следовать.
Я надеюсь, что кто-то может помочь мне двигаться вперед.
Часть данных:
<a:PLI>
<a:DT>False</a:DT>
<a:DTR>False</a:DTR>
<a:Desc>text text text</a:Desc>
<a:FN>Type</a:FN>
<a:PSPS>
<a:PSP>
<a:KY>org-group</a:KY>
<a:VL>40100</a:VL>
</a:PSP>
<a:PSP>
<a:KY>org-key</a:KY>
<a:VL>60205</a:VL>
</a:PSP>
<a:PSP>
<a:KY>org-systemkey</a:KY>
<a:VL>1005</a:VL>
</a:PSP>
<a:PSP>
<a:KY>org-report-type</a:KY>
<a:VL>text text text</a:VL>
</a:PSP>
</a:PSPS>
<a:TI>80200</a:TI>
</a:PLI>
<a:PLI>
<a:DT>Room</a:DT>
<a:DTR>Room</a:DTR>
<a:Desc/>
<a:FN>StartRoom</a:FN>
<a:PSPS>
<a:PSP>
<a:KY>org-group</a:KY>
<a:VL>13020</a:VL>
</a:PSP>
<a:PSP>
<a:KY>org-key</a:KY>
<a:VL>13130</a:VL>
</a:PSP>
</a:PSPS>
<a:TI>12500</a:TI>
</a:PLI>
<a:PLI>
<a:DT>Other room</a:DT>
<a:DTR>Other room</a:DTR>
<a:Desc/>
<a:FN>StartRoom</a:FN>
<a:PSPS>
<a:PSP>
<a:KY>org-group</a:KY>
<a:VL>11160</a:VL>
</a:PSP>
<a:PSP>
<a:KY>org-key</a:KY>
<a:VL>15152</a:VL>
</a:PSP>
</a:PSPS>
<a:TI>15552</a:TI>
</a:PLI>