Nano Hash - криптовалюты, майнинг, программирование

Измените форму на широкую функцию в R, но сохраните некоторые комбинации строк

Я пытаюсь расширить свои данные, пытаясь подготовить фрейм данных к внутрисубъектному анализу. В настоящее время он подходит для межсубъектного анализа. Самый полезный ответ, который я нашел до сих пор: Использование функция изменения формы в R с несколькими совпадающими строками

Мои данные выглядят так:

SubjID  ITEM SubjGroup Strength Timing Accuracy  RT
1       dance     1      1       200       1    1234
1       dance     1      2       200       0     430  
1       dance     1      1       400       1     450 
1       dance     1      2       400       1     200 
2       dance     2      1       200       0     300
2       dance     2      2       200       0     755
2       dance     2      1       400       1     550 
2       dance     2      2       400       1     520

Что мне нужно, так это в основном удалить столбец «Сила» и заменить его дополнительным столбцом «ВУ», чтобы ВУ1 относился к значению, которое я получил в Силе1, а ВУ2 ссылался на значение, которое я получил в Силе2, и сделать то же самое для точности. Каждый элемент повторяется 4 раза для каждого предмета (при двух разных комбинациях Сила + время), что означает, что к концу изменения формы будет 2 ряда для каждого глагола и для каждого субъекта вместо 4 для каждого элемента и для каждого предмета. Как это :

SubjID  ITEM SubjGroup        Timing           RT1   RT2
1       dance     1             200           1234   430
1       dance     1             400            450   200 
2       dance     2             200            300   755
2       dance     2             400            550   520 

Либо удаляя столбец «Точность» (если это упрощает задачу), либо добавляя второй.

Я попробовал простую формулу изменения формы (такую ​​же, как та, что была опубликована OP в ссылке выше), и она каким-то образом работала с аналогичным фреймом данных с теми же заголовками таблицы, но был только один идентификатор субъекта: reshape(datafr, idvar = c("ï..Subject", "Timing", "Group", "ITEM"), timevar= "TMS", direction = "wide") Когда я попробовал это с данными выше он создал правильный столбец, но он был пуст, и я получил предупреждающее сообщение. Я также пытался использовать Pivot, но это не сработало.
Спасибо!


  • Не могли бы вы (а) отредактировать образец ввода, чтобы его было легко импортировать в R? dput() проще всего, если у вас есть образцы данных, dput(your_data[1:8, ]) создаст версию для копирования/вставки первых 8 строк. Было бы хорошо знать, являются ли пробелы, которые вы показываете, пустыми строками, значениями NA или чем-то еще. 14.05.2021
  • (b) Не могли бы вы явно показать, какой результат вы ищете для этого примера ввода? Я не знаю, что вы подразумеваете под Strength1 и Strength2, и Точность будет относиться к одному из двух, что сбивает с толку - какой именно, откуда мы знаем какой? Возможно, вам придется отредактировать образец ввода, чтобы он полностью иллюстрировал проблему. 14.05.2021
  • Также будет 2 строки для каждого глагола и для каждого предмета вместо 4 для каждого элемента - я вижу SubjID, поэтому я могу догадаться, что такое предмет. Что вы имеете в виду под глаголом? 14.05.2021
  • @GregorThomas готово, спасибо! 14.05.2021
  • @GregorThomas Я заметил, что мне придется либо продублировать столбец «Точность», либо добавить второй, но я могу избавиться от него, если это упростит задачу. 14.05.2021

Ответы:


1

изменить форму2

out <- reshape2::dcast(dat, SubjID + ITEM + SubjGroup + Timing ~ Strength, value.var = "RT")
names(out)
# [1] "SubjID"    "ITEM"      "SubjGroup" "Timing"    "1"         "2"        
names(out)[5:6] <- paste0("RT", names(out)[5:6])
out
#   SubjID  ITEM SubjGroup Timing  RT1 RT2
# 1      1 dance         1    200 1234 430
# 2      1 dance         1    400  450 200
# 3      2 dance         2    200  300 755
# 4      2 dance         2    400  550 520

тайдыр

tidyr::pivot_wider(dat, c(SubjID, ITEM, SubjGroup, Timing),
                   names_prefix = "RT", names_from = "Strength", values_from = "RT")
# # A tibble: 4 x 6
#   SubjID ITEM  SubjGroup Timing   RT1   RT2
#    <int> <chr>     <int>  <int> <int> <int>
# 1      1 dance         1    200  1234   430
# 2      1 dance         1    400   450   200
# 3      2 dance         2    200   300   755
# 4      2 dance         2    400   550   520

или даже

tidyr::pivot_wider(dat, c(SubjID, ITEM, SubjGroup, Timing),
                   names_from = "Strength", values_from = c("Accuracy", "RT"),
                   names_sep = "")
# # A tibble: 4 x 8
#   SubjID ITEM  SubjGroup Timing Accuracy1 Accuracy2   RT1   RT2
#    <int> <chr>     <int>  <int>     <int>     <int> <int> <int>
# 1      1 dance         1    200         1         0  1234   430
# 2      1 dance         1    400         1         1   450   200
# 3      2 dance         2    200         0         0   300   755
# 4      2 dance         2    400         1         1   550   520

14.05.2021
  • спасибо, это было полезно. Однако первый вариант привел к отсутствию некоторых строк (всего 3 на элемент вместо 4, поэтому для некоторых участников отсутствовала строка) и только столбцам со значениями точности, второй и третий создали второй столбец RT, но он был заполнен. из НУЛЯ. 14.05.2021
  • Первое предложение Грегора предоставить вывод из dput(your_data[1:8, ]) по-прежнему является золотым стандартом для выборочных данных. Пожалуйста, измените подмножество строк (1:8) так, чтобы образец, который вы нам предоставили, воспроизводил симптомы, описанные здесь в вашем комментарии. 15.05.2021
  • MaryBay, вы смогли решить проблему? Если нет, вам все равно нужно будет добавить однозначные данные (dput). Если это так, и мой ответ был полезен, рассмотрите возможность его принятия. Спасибо! 26.05.2021
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..