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


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.