Я пытаюсь преобразовать лист Country Ratings, Status из файла Excel 2020_Country_and_Territory_Ratings_and_Statuses_FIW1973-2020.xlsx в аккуратный формат данных. Ссылка на файл
В этом процессе я загрузил книгу и сохранил ее в CSV-файл под названием Freedom.csv.
Файл CSV выглядит так: Ввод данных
Информация, которую я систематизирую и собираю из этого CSV:
- Страна
- Год (ы) на рассмотрении
- PR
- CL
- Положение дел
Как бы вы преобразовали файл в этот формат?
Код, который я пытался использовать в файле, был
library(tidyverse)
filelocation<- "./Data/"
FreedomIndex <- read.csv(file = paste0(filelocation,'Freedom.csv'),skip=2)
col2 = paste(rep(c("PR", "CL", "Status"), 47),rep(1973:2019, each=3),
sep = "-")
RenamesCol = c("Country", col2)
colnames(FreedomIndex) = RenamesCol
Freedomtidy<-FreedomIndex %>%
pivot_longer(cols = c(col2), names_to = "Type", values_to = "Freedom") %>%
arrange("Country")
Freedomtidy = separate(data = Freedomtidy, col = Type, into = c("Type", "year"),
sep = "-")
Freedomtidy %>%
pivot_wider(names_from = "Type", values_from = "Freedom") %>%
arrange("Country", "year")
Freedomtidy %>%
pivot_wider(id_cols = c("Country", "year"), names_from = "Type",
values_from = "Freedom") %>%
arrange("Country", "year")
Этот код не преобразовал данные в требуемый формат. Я получил ‹chr 1› в возвращенных данных.
Также важно отметить, что списки во фрейме данных выглядят следующим образом:
Freedomtidy$PR[1]
Выход:
[[1]]
[1] "4"
Я проверил ваши коды с небольшим изменением с pivot_longer(cols = c(col2)
на pivot_longer(cols = all_of(col2)
. Столбцы не преобразуются в столбцы-списки. Вы можете попробовать. — person Bonnie schedule 30.01.2021
Спасибо, что внесли это изменение, он по-прежнему возвращает список. Фреймворк данных, возвращенный в конце, содержит столбцы: Страна ‹chr›, год ‹chr›, PR ‹list›, CL ‹list›, Статус ‹list›. В качестве примера вывод «Freedomtidy $ PR [1]» возвращает [[1]] [1] 4 — person Bonnie schedule 30.01.2021
Это странно. Я запустил коды с небольшими изменениями, и я не получил столбцов списка. Возможно, вы захотите проверить, используете ли вы последнюю версию пакета. — person Bonnie schedule 30.01.2021
Попробуйте добавить
values_fn
какtoString
вpivot_wider
:Частично проблема заключается в том, что в строке группировки «Проверяемые годы» нет строго числовых значений года. Есть значения, разделенные на год, например. Январь 1981 г. — август 1982 г. Вы можете заранее объединить такие столбцы, чтобы они относились к целому году для согласованности.
Я создал альтернативное решение, которое дает фрейм данных длинного формата с вашими данными как есть. Я прочитал файл Excel напрямую: не нужно сначала экспортировать в CSV.