R читать CSV с наблюдениями в столбцах - PullRequest
0 голосов
/ 25 мая 2019

в каждом примере, который я видел до сих пор для чтения CSV-файлов в R, переменные находятся в столбцах, а наблюдения (отдельные лица) - в строках. Во вводном курсе по статистике, который я беру, есть пример таблицы, в которой (многие) переменные находятся в строках, а (несколько) наблюдений - в столбцах. Есть ли способ прочитать такую ​​таблицу, чтобы получить кадр данных в обычной «ориентации»?

1 Ответ

0 голосов
/ 25 мая 2019

Вот решение, которое использует Tidyverse. Сначала мы собираем данные в узкие форматы данных, затем распространяем их обратно в широкоформатный формат, устанавливая первый столбец в качестве ключа для собранных наблюдений, исключая его из gather().

Мы продемонстрируем технику с помощью сводных данных на уровне состояния из США. Бюро переписей .

Я создал таблицу данных о населении для четырех состояний, где состояния (наблюдения) представлены в столбцах, а переменные перечислены в строках таблицы.

enter image description here

Чтобы сделать пример воспроизводимым, мы ввели данные в Excel и сохранили их в виде файла значений, разделенных запятыми, который мы назначаем для вектора в R и читаем с помощью read.csv().

textFile <- "Variable,Georgia,California,Alaska,Alabama
population2018Estimate,10519475,39557045,737438,4887871
population2010EstimatedBase,9688709,37254523,710249,4780138
pctChange2010to2018,8.6,6.2,3.8,2.3
population2010Census,8676653,37253956,710231,4779736"

# load tidyverse libraries 
library(tidyr)
library(dplyr)
# first gather to narrow format then spread back to wide format
data %>% 
     gather(.,state,value,-Variable) %>% spread(Variable,value)

... и результаты:

       state pctChange2010to2018 population2010Census
1    Alabama                 2.3              4779736
2     Alaska                 3.8               710231
3 California                 6.2             37253956
4    Georgia                 8.6              8676653
  population2010EstimatedBase population2018Estimate
1                     4780138                4887871
2                      710249                 737438
3                    37254523               39557045
4                     9688709               10519475
...