Краткая история о том, что мне нужно: Я прочитал в CSV-файле, и я хочу взять некоторые из столбцов и сохранить их в переменных как их собственный кадр данных, а затем сохраните переменные в списке. Однако, когда я использую c()
для этого, он просто помещает все данные в плоский вектор. Есть ли способ иметь список кадров данных?Как сделать «списки» или «векторы» фреймов данных
Чем длиннее история: Я прочитал в файле CSV, предположим, что он выглядит как этот
,"Date","px high","px low","px last",,,,"Date","px high","px low","px last"
"eur curncy",03/Jan/2000,1.03,1.01,1.02,,,"gbp curncy",03/Jan/2000,1.64,1.61,1.64
,1/4/2000,1.03,1.02,1.03,,,,1/4/2000,1.64,1.63,1.64
,1/5/2000,1.04,1.03,1.03,,,,1/5/2000,1.65,1.64,"#N/A N/A"
,1/6/2000,1.04,1.03,1.03,,,,1/7/2000,1.65,1.64,1.65
Когда я сохранить файл для чтения CSV и печати переменной она выглядит как
Date px.high px.low px.last Date.1 px.high.1 px.low px.last
eur curncy 03/Jan/2000 1.03 1.02 1.03 03/Jan/2000 1.64 1.63 1.64
1/4/2000 1.03 1.02 1.03 1/4/2000 1.64 1.63 1.64
... etc.
Я сбрил много данных для этого примера, чтобы избежать беспорядка, но есть еще много строк и столбцов этих данных. Вдоль столбцов они повторяются в этих группах, каждая из которых имеет дату, px высокий и т. Д. По строкам вы более или менее получаете то же самое, что и в последних парах строк, показанных выше.
В конечном итоге я хочу войти в каждую группу данных, сегментировать ее в месяцах, вычислить средние значения за каждый месяц в каждом столбце и выбросить ежедневную информацию, а затем составить гистограмму для каждой группы. Однако у меня есть следующие проблемы, которые мне необходимо решить:
- Первая строка дат отличается от других строк в другом формате. Все строки после первой строки находятся в одном формате. Я очень хорошо это исправить себя, прочитав в данных, как
cur <- read.csv('C:\\file.csv', stringsAsFactors=FALSE)
, а затем цикл по столбцам, назначая в нужных местах
cur[1,col] <- as.character(as.date(cur[1,col], format='%d/%b/%Y'))
Затем я могу форматировать остальную часть записей даты, перебирая строки, а затем столбцы и в основном делайте то же самое снова.
- Некоторые из записей в файле CSV содержат строку «# N/AN/A», которая, как я нашел, заставит R читать каждую другую запись в этом столбце как string, так что я больше не могу выполнять арифметику для объектов. Я в порядке, просто выбросив эти строки данных, которые есть на них, но даже при этом столбцы остаются строками. Кроме того, если я выброшу строку из одной из этих групп, я отброшу всю строку для всех остальных данных, которые я не хочу делать.
Арифметическая проблема легко решить, когда я делаю арифметику, я просто конвертирую все в числовое. Это может быть неэффективно, но, похоже, оно работает достаточно хорошо. Но проблема, связанная с тем, что все эти строки объединены в одном кадре данных, так что, если я выброшу одну строку, я также выброшу все остальные данные в эту строку, а иногда даты групп не совпадают. Поэтому, если я отброшу строку, которая имеет «# N/A N/A» на нем на одну дату, я буду выбрасывать другие даты для других групп, чего я не хочу. Поэтому лучшим решением, о котором я могу думать, является разделение групп на собственные кадры данных и их обработка несколько по отдельности.
- Некоторые данные имеют неверные совпадения. Я хочу в принципе выбросить любую дату из любой из этих групп данных, если эта дата не используется всеми данными.Но снова я хочу сделать это только на ту же дату во всех группах - я не могу просто удалить строку, потому что снова эта строка может соответствовать одной дате в одной группе, но другой дате в другой группе. Поэтому снова кажется, что разделение групп - это то, что нужно сделать.
Но если кто-то думает, что есть лучший способ пойти, дайте мне знать.
Почему код CSV неработоспособной? Я в основном просто копировал и вырезал его из файла CSV. Кроме того, данные, которые вы представляете, не так, как предполагается. Когда я печатаю переменную, которую вы назвали 'dat', я должен получить другую таблицу. Я отредактирую исходное сообщение, чтобы показать, как это должно быть. – Addem
ну, я действительно не пробовал, но вы можете использовать это на своих данных в любом случае. @Addem см. В редакции – rawr
Так что в коде есть какие-то приятные вещи, которые я раньше не видел, чтобы определенно помочь в вопросах форматирования, поэтому спасибо. Тем не менее, я до сих пор не знаю, как решить мою самую большую проблему, связанную с удалением соответствующих частей данных. Например, я хотел бы иметь возможность удалить третью строку второй группы данных, поскольку она имеет значение NA. Затем я хотел бы удалить ту же дату для первой группы значений. Тогда я также хотел бы удалить четвертую дату первой группы, потому что она содержит дату, 2000-06-01, которую нет у другой. – Addem