Изменение формы кадра данных без имени столбца в r

У меня есть такой фрейм данных:

structure(list(...1 = c(NA, NA, "name_var1", "obs1_var1", "obs2_var1"
), ...2 = c(NA, NA, "name_var2", "obs1_var2", "obs2_var2"), ...3 = c(NA, 
NA, "name_var3", "obs1_var3", "obs2_var3"), ...4 = c("Dimension", 
"Subdimension", "name_var4", "obs1_var4", "obs2_var4"), ...5 = c("Dimension1", 
"Subdimension1", "question1.1.1", "1", "4"), ...6 = c("Dimension1", 
"Subdimension1", "question1.1.2", "3", "2"), ...5.1 = c("Dimension1", 
"Subdimension2", "question1.2.1", "1", "2"), ...5.2 = c("Dimension1", 
"Subdimension2", "question1.2.2", "4", "1"), ...5.3 = c("Dimension2", 
"Subdimension1", "question2.1.1", "1", "4"), ...6.1 = c("Dimension2", 
"Subdimension1", "question2.1.2", "3", "2"), ...5.4 = c("Dimension2", 
"Subdimension2", "question2.2.1", "1", "2"), ...5.5 = c("Dimension2", 
"Subdimension2", "question2.2.2", "4", "1")), class = "data.frame", row.names = c(NA, 
-5L))

и я хотел бы превратиться в этот

structure(list(name_var1 = c("obs1_var1", "obs1_var1", "obs1_var1", 
"obs1_var1", "obs1_var1", "obs1_var1", "obs1_var1", "obs1_var1"
), name_var2 = c("obs1_var2", "obs1_var2", "obs1_var2", "obs1_var2", 
"obs1_var2", "obs1_var2", "obs1_var2", "obs1_var2"), name_var3 = c("obs1_var3", 
"obs1_var3", "obs1_var3", "obs1_var3", "obs1_var3", "obs1_var3", 
"obs1_var3", "obs1_var3"), name_var4 = c("obs1_var4", "obs1_var4", 
"obs1_var4", "obs1_var4", "obs1_var4", "obs1_var4", "obs1_var4", 
"obs1_var4"), Dimension = c("Dimension1", "Dimension1", "Dimension1", 
"Dimension1", "Dimension2", "Dimension2", "Dimension2", "Dimension2"
), Subdimension = c("Subdimension1", "Subdimension1", "Subdimension2", 
"Subdimension2", "Subdimension1", "Subdimension1", "Subdimension2", 
"Subdimension2"), Question = c("question1.1.1", "question1.1.2", 
"question1.2.1", "question1.2.2", "question2.1.1", "question2.1.2", 
"question2.2.1", "question2.2.2"), Value = c(1, 3, 1, 4, 1, 3, 
1, 4)), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, 
-8L))

... И продолжая все наблюдения в исходном кадре данных. есть идеи как это сделать?

Заранее спасибо за ваши комментарии и помощь.

Как вы получили этот формат в первую очередь?

jay.sf 17.05.2022 08:23
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
1
1
27
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вам приходится делать много подобных преобразований данных, я рекомендую пакет unpivotr. Существует связанный пакет под названием tidyxl, который полезен для чтения файлов Excel в необработанном виде, ячейка за ячейкой. Это может быть полезно, когда заголовки столбцов представлены в виде текста, а ячейки ниже содержат числа, даты, логические значения и т. д. Кроме того, вы даже можете использовать информацию о форматировании, которая иногда необходима для правильного извлечения информации из файла xlsx.

Автор пакета создал бесплатную онлайн-книгу Стратегии обработки электронных таблиц, в которой рассказывается о многих ситуациях. В вашем случае вы можете использовать

library(tidyverse)
library(unpivotr)

start %>% 
    as_cells() %>% 
    behead("up", Dimension) %>% 
    behead("up", Subdimension) %>%
    behead("up", Question) %>%
    behead("left", name_var1) %>% 
    behead("left", name_var2) %>% 
    behead("left", name_var3) %>% 
    behead("left", name_var4) %>% 
    select(name_var1:name_var4, Dimension:Question, Value = chr)

где start — ваш начальный фрейм данных. На самом деле лучше всего читать необработанный файл excel с помощью пакета tidyxl, но это не обязательно.

Другие вопросы по теме