Verileri Yeniden Şekillendirmek / Yeniden Yapılandırmak için en iyi yol nedir?


12

Ben bir laboratuvar için araştırma görevlisiyim (gönüllü). Ben ve küçük bir grup, büyük bir çalışmadan alınan bir veri kümesi için veri analizi ile görevlendirildik. Ne yazık ki, veriler bir tür çevrimiçi uygulama ile toplanmış ve verilerin en kullanışlı biçimde çıkması için programlanmamıştır.

Aşağıdaki resimler temel sorunu göstermektedir. Bunun "Yeniden Şekillendirme" veya "Yeniden Yapılandırma" olarak adlandırıldığı söylendi.

Soru: 10 binden fazla girişi olan büyük bir veri kümesiyle Resim 1'den Resim 2'ye gitmek için en iyi süreç nedir?

Bu bir örnektir, gerçek dosya 10 binden fazla girişe sahiptir.  Netliğe yardımcı olmak için renk kodlu oldum

Tüm bunların dönüştürülmesi gerekiyor.


1
Lütfen bunu iki ayrı soruya bölün ve örnek veriler sağlayın (alakalı olmadıkça arka planınızı da atlayabilirsiniz). Kabaca, (1) üzerinde bir eşleme bulmak ve ardından numara eklemek için birleştirmek istersiniz. (2) büyük ölçüde yapmak isteyeceğiniz manipülasyon türüne bağlıdır; Bu tür bir şey için popüler R paketleri içerir data.table, dplyr, plyr, ve reshape2- eğer mümkünse ben Excel ve pivot tablolar kaçınarak öneriyoruz.
Max Ghenis

Veri temizleme sorunlarınızın, sorduğunuz genel sorularda ele alınabileceğinden daha kapsamlı olduğunu tahmin ediyorum. OpenRefine.org'a bakmak isteyebilirsiniz. Birkaç video ve bir indirme, analizinizin bu bölümünde size çok yardımcı olabilir.
John

3
Bu soru konu dışı gibi görünmektedir, çünkü istatistiklerle değil, ilkel veri temizliği ve organizasyonu ile ilgilidir.
Nick Stauner

2
Bunun konu dışı olduğunu söyleyebilirim, çünkü işleminizin "ilkel" olduğu gibi verilerinizi temizlemek onu kullanmak için gereklidir. Daha büyük bir sorunun parçası.
shadowtalker

2
@NickStauner, IIRC Konu dışı değil, 'belirsiz / daha fazla bilgiye ihtiyaç duyuyor' olarak oy verdim. Bana öyle geliyor ki, veri temizliği, geniş çaplı istatistik kapsamındadır ve iyi insanların aynı fikirde olmadığını kabul etsem de, bu tür soruların konuya uygun olabileceğini düşünüyorum. Bir veri temizleme etiketimiz olduğunu ve şu CV dizilerinin olduğunu düşünün : 1 , 2 , 3 ve 4 .
gung - Monica'yı eski

Yanıtlar:


12

Benim de belirtildiği gibi açıklama , gerçek bir cevap formüle edilmesi için, söz konusu yeterince detay yok. Doğru terimleri bulmak ve sorunuzu formüle etmek için bile yardıma ihtiyacınız olduğundan, genel olarak kısaca konuşabilirim.

Aradığınız terim veri temizliğidir . Bu ham, kötü biçimlendirilmiş (kirli) verileri alma ve analizler için şekillendirme işlemidir. Biçimleri değiştirme ve düzenleme ("iki" ) ve satır ve sütunları yeniden düzenleme tipik veri temizleme görevleridir. 2

Bir anlamda, veri temizleme herhangi bir yazılımda yapılabilir ve Excel veya R ile yapılabilir. Her iki seçeneğin artıları ve eksileri olacaktır:

  • Excel: Excel neredeyse kesinlikle veri temizliği için en yaygın seçimdir (bkz. R fortunes # 59 pdf ). Ayrıca istatistikçiler tarafından kötü bir seçim olarak kabul edilir. Birincil neden, her şeyi yakaladığınızdan veya her şeye aynı şekilde davrandığınızdan emin olmanın zor olmasıdır ve yaptığınız değişikliklerin kaydı yoktur, bu nedenle bu değişiklikleri daha sonra tekrar ziyaret edemezsiniz. Excel'i kullanmanın tersi, ne yaptığınızı görmenin daha kolay olacağı ve değişiklik yapmak için çok fazla şey bilmeniz gerekmemesidir. (İstatistikçiler ikincisini ek bir con olarak değerlendireceklerdir .)
  • R: R dik bir öğrenme eğrisi gerektirecektir. R veya programlamaya çok aşina değilseniz, Excel'de oldukça hızlı ve kolay bir şekilde yapılabilecek şeyler R'de denemek için sinir bozucu olacaktır. Öte yandan, bunu tekrar yapmak zorunda kalırsanız, bu öğrenme iyi geçirilmiş zaman. Ayrıca, R'deki verileri temizlemek için kodunuzu yazma ve kaydetme yeteneği, yukarıda listelenen eksileri hafifletecektir. Aşağıda, R'deki bu görevlere başlamanıza yardımcı olacak bazı bağlantılar verilmiştir:

    Stack Overflow hakkında birçok iyi bilgi edinebilirsiniz :

    Quick-R ayrıca değerli bir kaynaktır:

    Sayıları sayısal moda alma:

    R hakkında bilgi edinmek için bir başka paha biçilmez kaynak, UCLA'nın istatistik yardım web sitesidir :

    Son olarak, iyi eski Google ile her zaman birçok bilgi bulabilirsiniz:


Güncelleme: Bu, 'çalışma birimi' başına birden fazla ölçüm yaptığınızda (sizin durumunuzda, bir kişi) veri kümenizin yapısıyla ilgili yaygın bir sorundur. Her kişi için bir satırınız varsa, verilerinizin 'geniş' formda olduğu söylenir, ancak yanıt değişkeniniz için mutlaka birden çok sütununuz olacaktır. Öte yandan, yanıt değişkeniniz için yalnızca bir sütununuz olabilir (ancak sonuç olarak kişi başına birden fazla satırınız olabilir), bu durumda verilerinizin 'uzun' formda olduğu söylenir. Bu iki biçim arasında geçişe genellikle verilerinizi özellikle R dünyasında 'yeniden şekillendirme' denir.

  • Bunun için standart R fonksiyonu ? Yeniden şekillendirmedir . Bir yoktur rehber kullanmaya reshape()UCLA istatistiklerini yardım web sitesinde.
  • Birçok insan reshapeçalışmak zor. Hadley Wickham , süreci basitleştirmeyi amaçlayan reshape2 adlı bir pakete katkıda bulundu . Hadley'nin reshape2 için kişisel web sitesi burada , Quick-R'ye genel bakış burada ve hoş görünümlü bir eğitim var .
  • Verilerin nasıl yeniden şekillendirileceği hakkında SO hakkında çok fazla soru var. Çoğu genişten uzağa gitmekle ilgilidir, çünkü tipik olarak veri analistlerinin karşılaştığı budur. Sorunuz, çok daha az yaygın olan uzuntan genişliğe gitmektir, ancak bununla ilgili hala çok sayıda konu var, bu arama ile bunlara bakabilirsiniz .
  • Kalbiniz bunu Excel ile yapmaya çalışacak şekilde ayarlanmışsa, Excel'in yeniden şekillendirme işlevini burada çoğaltması için bir VBA makrosu yazmayla ilgili bir iş parçacığı vardır: VBA kullanarak Excel'de erime / yeniden şekillendirme ?

2
Bu soru ve bu cevap, hemen hemen her türlü araştırma için okuryazarlığın programlanmasının neden giderek daha fazla gerekli olduğunun harika bir örneğidir. Blogumda da yayınlayacağım bu soruya daha eksiksiz bir cevap yazacağım, ancak unutmadan önce bu yorumu almak istedim.
shadowtalker

2
Bir dereceye kadar katılıyorum ama "gerekli" ve "her türlü araştırma" biraz ileri gidiyor. Birçok disiplin genellikle kirli verilerle ilgilenmez ve önde gelen birçok araştırmacının hiçbir zaman bir programlama diline dokunması gerekmez.
Behacad

Vay canına, hepinize teşekkürler. Benim için çok yeni olan tüm bu bilgileri işlemek ve entegre etmek biraz zamanımı alacak. Biraz meta tanjant, sorumla teşvik ettiğim anlaşılıyor ... Dilinin / kültürünün bilgisi olmadan yabancı bir ülkeye düştüğünüzü hayal edin, bu benim ve istatistikler. Yanıt verirken hepinize ayırdığınız zamanı takdir ediyorum.
Wilkoe

Soru kapatılmış gibi görünse de, ilk sorumu açıklığa kavuşturmak umuduyla bir düzenleme ekledim.
Wilkoe

Soru kapalı, @ user48538 ve bu sürüm maalesef öncekinden daha açık konu dışı. 10k satırınız varsa, bunu kesinlikle Excel'de yapmaya çalışmak istemezsiniz. Gerçekten R veya benzeri bir programlama yazılımı kullanmalısınız. Belirli bir işlemin adı veri kümenizi 'uzun' ile 'geniş' arasında yeniden şekillendirmektir, sizin için birkaç bağlantı daha ekleyeceğim. Buna ek olarak, bir lisans gönüllüsüyseniz, istatistiklerde veya programlamada arka plan olmadan veya çok az bilgi sahibiyseniz, bu görevi size kim atayacağından çok sorumsuzdunuz, IMHO. Bunun sizin göreviniz olması mümkün değil.
gung - Monica'yı eski

0

R kullanarak şunları deneyin:

> 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

Skala'da buna "patla" işlemi denir ve bir dataFrame üzerinde yapılabilir. Verileriniz bir rdd ise, önce toDFkomut aracılığıyla dataFrame'e dönüştürür ve sonra .explodeyöntemi kullanırsınız .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.