Який найкращий спосіб змінити / змінити дані?


12

Я науковий співробітник лабораторії (волонтер). Я та мала група отримали завдання щодо аналізу даних для набору даних, отриманих із великого дослідження. На жаль, дані були зібрані за допомогою якогось інтернет-додатка, і вони не були запрограмовані для виведення даних у найбільш зручній формі.

На малюнках нижче зображено основну проблему. Мені сказали, що це називається "Переформатування" або "Перебудова".

Запитання: Який найкращий процес для переходу від малюнка 1 до малюнка 2 з великим набором даних з більш ніж 10 к записами?

Це зразок, фактичний файл має понад 10 к записів.  Я кольоровим кодом, щоб допомогти з ясністю

Це те, в що все це потрібно перетворити.


1
Будь ласка, розділіть це на два окремих питання та надайте зразкові дані (ви також можете опустити свою інформацію, якщо це не стосується). Приблизно на (1) ви захочете знайти зіставлення, а потім об'єднатись, щоб прикріпити числа. (2) сильно залежить від типу маніпуляцій, які ви хочете зробити; популярні пакети R для такого роду речі , включають в себе data.table, dplyr, plyr, і reshape2- я рекомендую уникати Excel і зведених таблиць , якщо це можливо.
Макс Геніс

Я здогадуюсь, що ваші проблеми з очищенням даних є більш масштабними, ніж можуть бути охоплені типом загальних питань, які ви задаєте. Ви можете подивитися на OpenRefine.org. Кілька відео та завантаження можуть дуже допомогти вам у цій частині аналізу.
Джон

3
Це питання видається поза темою, оскільки йдеться про рудиментарне очищення даних та організацію, а не про статистику.
Нік Стаунер

2
Я б сказав, що це не тематично, оскільки очищення ваших даних настільки "рудиментарним", наскільки це може бути процес, є важливим для його використання. Це частина більшого випуску.
shadowtalker

2
@ NickStauner, IIRC Я проголосував за закриття як "незрозуміло / потрібна додаткова інформація", а не як поза темою. Мені здається, що чистка даних входить до сфери статистичних даних, і хоча я визнаю, що хороші люди можуть не погодитися, я думаю, такі питання можуть бути тематичними. Вважайте, що у нас є тег очищення даних і ці нитки CV: 1 , 2 , 3 і 4 .
gung - Відновіть Моніку

Відповіді:


12

Як я зазначив у своєму коментарі , у питанні недостатньо деталей, щоб сформулювати реальну відповідь. Оскільки вам потрібна допомога навіть у пошуку правильних термінів та формулюванні свого питання, я можу коротко висловитись у загальних рисах.

2

У певному сенсі очищення даних можна здійснити в будь-якому програмному забезпеченні, а також можна виконати за допомогою Excel або за допомогою R. У обох варіантів будуть плюси і мінуси:

  • Excel: Excel - це майже напевно найпоширеніший вибір для очищення даних (див. R fortunes # 59 pdf ). Статистики також вважають поганим вибором. Основна причина полягає в тому, що важко переконатися, що ви все схопили, або що ви ставились до всього однаково, і не було записано змін, які ви внесли, тому ви не зможете переглянути ці зміни пізніше. Перевагою використання Excel є те, що вам буде легше бачити, що ви робите, і вам не потрібно багато знати, щоб внести зміни. (Статистики вважатимуть останнє додатковою умовою .)
  • R: R вимагатиме крутої кривої навчання. Якщо ви не дуже знайомі з R або програмуванням, те, що можна зробити досить швидко і легко в Excel, буде неприємно намагатися спробувати R. З іншого боку, якщо вам колись доведеться це робити ще раз, це навчання було б добре витрачений час. Крім того, можливість запису та збереження вашого коду для очищення даних в R зменшить перелічені вище мінуси. Нижче наведено кілька посилань, які допоможуть вам розпочати роботу з цими завданнями на R:

    Ви можете отримати багато корисної інформації про переповнення стека :

    Quick-R також є цінним ресурсом:

    Введення чисел у числовий режим:

    Ще одне безцінне джерело для вивчення R - це веб-сайт зі статистикою UCLA :

    Нарешті, ви завжди можете знайти багато інформації зі старого доброго Google:

    • Цей пошук: очищення даних в r , містить ряд навчальних посібників (жоден з яких я не працював, FTR).

Оновлення: це поширене питання щодо структури вашого набору даних, коли у вас є кілька вимірювань на "навчальну одиницю" (у вашому випадку - особу). Якщо у вас є один рядок для кожної людини, ваші дані, як кажуть, містяться у "широкій" формі, але тоді ви обов'язково матимете кілька стовпців для змінної відповіді, наприклад. З іншого боку, у вас може бути лише один стовпець для змінної вашої відповіді (але в результаті є кілька рядків на людину), і в цьому випадку ваші дані, як кажуть, є у "довгій" формі. Переміщення між цими двома форматами часто називають "переформатуванням" ваших даних, особливо у світі.

  • Стандартною функцією R для цього є «переформатування . На довідковому веб-сайті статистики UCLA є посібник із використання reshape().
  • Багато хто думає reshape, що важко працювати. Хедлі Вікхем створила пакет під назвою reshape2 , який призначений для спрощення процесу. Персональний сайт Хедлі для reshape2 знаходиться тут , огляд Quick-R знаходиться тут , і є хороший вид підручник тут .
  • Питання щодо переформатування даних виникають дуже багато. Більшість із них збираються переходити від широкого до довгого, тому що, як правило, стикаються аналітики даних. Ваше запитання - про те, щоб перейти від довгого до широкого, що набагато рідше, але все ще існує багато тем, і ви можете переглянути їх за допомогою цього пошуку .
  • Якщо ваше серце налаштоване на те, щоб зробити це за допомогою Excel, є нитка про те, щоб написати макрос VBA для Excel для копіювання функцій переформатування тут: melt / rehshape в Excel за допомогою VBA?

2
Це питання, і ця відповідь, є чудовою ілюстрацією того, чому грамотність програмування все частіше необхідна для проведення будь-яких досліджень. Я збираюся написати більш повну відповідь на це питання, яку я також збираюся розмістити у своєму блозі, але я хотів отримати цей коментар, перш ніж забути.
shadowtalker

2
Я певною мірою згоден, але "необхідні" і "будь-які дослідження" заходять трохи далеко. Багато дисциплін часто не мають справу з брудними даними, і багатьом провідним дослідникам ніколи не потрібно торкатися мови програмування.
Бехакад

Вау, всім дякую Мені знадобиться трохи обробити та інтегрувати всю цю інформацію, яка для мене дуже нова. Трохи мета дотичної, здається, я підштовхнув своє запитання ... Уявіть, що ви потрапили в чужу країну, не знаючи її мови / культури, це я і статистика. Я вдячний за час, який ви витратили на відповіді.
Вілько

Я додав редагування, сподіваючись уточнити моє початкове запитання, хоча питання виглядає як закрите.
Вілько

Питання закрите @ user48538, і ця версія, на жаль, явно поза темою, ніж попередня. Якщо у вас є 10k рядків, ви точно не хочете намагатися робити це в Excel. Ви дійсно повинні використовувати R або подібне програмне забезпечення для програмування. Назва конкретної операції полягає в перетворенні вашого набору даних з "довгого" на "широке", я додамо ще кілька посилань для вас. Крім того, якщо ви є студентом-добровольцем, який не має жодного досвіду в статистиці чи програмуванні, то був дуже безвідповідальний, хто б не призначив це завдання вам, ІМХО. Ні в якому разі це не повинно бути вашим завданням.
gung - Відновіть Моніку

0

Спробуйте виконати наступне використання R:

> ddf
   sess_id user_id     quest  response
1        1       a       age        29
2        1       a satisfied  st_agree
3        1       a    gender      male
4        1       a     phone    iphone
5        2       a       age        29
6        2       a satisfied not_agree
7        2       a    gender    female
8        2       a     phone    iphone
9        3       b       age        29
10       3       b satisfied     agree
11       3       b    gender      male
12       3       b     phone   android
> 
> library(reshape2)
> dcast(ddf, sess_id+user_id ~ quest, value.var='response')
  sess_id user_id age gender   phone satisfied
1       1       a  29   male  iphone  st_agree
2       2       a  29 female  iphone not_agree
3       3       b  29   male android     agree

0

У масштабі це називається операцією "вибух" і може бути виконана на DataFrame. Якщо ваші дані є rdd, ви спочатку перетворите в dataFrame за допомогою toDFкоманди, а потім скористайтеся .explodeметодом.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.