আর-তে প্রশস্ত ও দীর্ঘ বিন্যাসের মধ্যে ডেটা কীভাবে পরিবর্তন করবেন? [বন্ধ]


32

আপনার প্রশস্ত ফর্ম্যাট বা দীর্ঘ বিন্যাসে ডেটা থাকতে পারে। বিন্যাসের ভিত্তিতে ব্যবহারযোগ্য পদ্ধতিগুলি পৃথক হওয়ায় এটি বেশ গুরুত্বপূর্ণ বিষয়। আমি জানি যে আপনাকে পুনর্নির্মাণের প্যাকেজটির সাথে melt()এবং এ cast()থেকে কাজ করতে হবে তবে কিছু জিনিস মনে হচ্ছে যা আমি পাই না।

কেউ আমাকে কীভাবে সংক্ষিপ্ত বিবরণ দিতে পারে?


আপনি কী অর্জন করতে চান তার উদাহরণ দিন। আপনি ঠিক কি পাবেন না?
এমপিটিকাস

3
এখানে আমার ব্লগ পোস্ট ব্যবহারের উদাহরণ meltএবং cast। সেখানে এক পর্যায়ে প্রশস্ত থেকে দীর্ঘ বিন্যাসে রূপান্তর করা হয়। সত্যিকারের আর বিশেষ কিছু নেই।
এমপিটিকাস

পরিসংখ্যান স্বাগত। আপনি কী চান তা ব্যাখ্যা করতে আপনার প্রশ্নের মধ্যে এটি একটি ছোট, পুনরুত্পাদনযোগ্য ডেটাসেট অন্তর্ভুক্ত করতে সহায়তা করতে পারে। আরও পড়ুন sigmafield.org/2011/01/18/…
পলহুরলেয়ুক

এটি করার বিভিন্ন উপায়ের জন্য এই SO প্রশ্নটি দেখুন ।
এক্সিম্যান

উত্তর:


26

প্যাকেজের (এখন বলা হয় ) কাগজের লিঙ্ক সহ হ্যাডলি উইকহ্যামের ওয়েবসাইটে বেশ কয়েকটি সংস্থান reshape2রয়েছে জার্নাল অফ স্ট্যাটিস্টিকাল সফ্টওয়্যার-এ প্যাকেজের ।

এখানে কাগজ থেকে একটি সংক্ষিপ্ত উদাহরণ:

> require(reshape2)
Loading required package: reshape2
> data(smiths)
> smiths
     subject time age weight height
1 John Smith    1  33     90   1.87
2 Mary Smith    1  NA     NA   1.54

আমরা নোট করি যে ডেটা প্রশস্ত আকারে। দীর্ঘ ফর্মে যেতে, আমরা smithsডেটা ফ্রেমটি গলিত করে ফেলি :

> melt(smiths)
Using subject as id variables
     subject variable value
1 John Smith     time  1.00
2 Mary Smith     time  1.00
3 John Smith      age 33.00
4 Mary Smith      age    NA
5 John Smith   weight 90.00
6 Mary Smith   weight    NA
7 John Smith   height  1.87
8 Mary Smith   height  1.54

খেয়াল করুন কীভাবে melt()কোনও ভেরিয়েবলকে আইডি হিসাবে বেছে নিয়েছে, তবে আমরা আর্গুমেন্টের মাধ্যমে কোনটি ব্যবহার করতে হবে তা স্পষ্টভাবে বলতে পারি 'id':

> melt(smiths, id = "subject")
     subject variable value
1 John Smith     time  1.00
2 Mary Smith     time  1.00
3 John Smith      age 33.00
4 Mary Smith      age    NA
5 John Smith   weight 90.00
6 Mary Smith   weight    NA
7 John Smith   height  1.87
8 Mary Smith   height  1.54

এখানে থেকে অন্য একটি উদাহরণ ?cast:

#Air quality example
names(airquality) <- tolower(names(airquality))
aqm <- melt(airquality, id=c("month", "day"), na.rm=TRUE)

আমরা যদি গলিত ডেটা ফ্রেম সঞ্চয় করি তবে আমরা অন্যান্য ফর্মগুলিতে কাস্ট করতে পারি । reshape(ডাকা reshape2) এর নতুন সংস্করণে ফাংশন রয়েছে acast()এবং dcast()যথাক্রমে একটি অ্যারের মতো (অ্যারে, ম্যাট্রিক্স, ভেক্টর) ফলাফল বা একটি ডেটা ফ্রেম প্রদান করা হবে। এই ফাংশনগুলি mean()গলিত আকারে ডেটার সংক্ষিপ্তসারগুলি সরবরাহ করার জন্য একটি সামগ্রিক ফাংশনও গ্রহণ করে (যেমন )। উদাহরণস্বরূপ, উপরের বায়ু মানের উদাহরণ অনুসরণ করে, আমরা ডেটা সেটে ভেরিয়েবলের জন্য মাসিক গড় মান তৈরি করতে পারি, বিস্তৃত আকারে can

> dcast(aqm, month ~ variable, mean)
  month    ozone  solar.r      wind     temp
1     5 23.61538 181.2963 11.622581 65.54839
2     6 29.44444 190.1667 10.266667 79.10000
3     7 59.11538 216.4839  8.941935 83.90323
4     8 59.96154 171.8571  8.793548 83.96774
5     9 31.44828 167.4333 10.180000 76.90000

এখানে দুটি মাত্র প্রধান ফাংশন রয়েছে reshape2: melt()এবং acast()এবং dcast()জুটি। এই দুটি ফাংশনের জন্য সহায়তা পৃষ্ঠাগুলির উদাহরণগুলি দেখুন, হ্যাডলির ওয়েবসাইট (উপরে লিঙ্ক) দেখুন এবং আমি উল্লিখিত কাগজটি দেখুন। যেটা তোমার শুরু করা উচিত।

আপনি হ্যাডলির plyrপ্যাকেজটিও দেখতে পারেন যা একই রকম কাজ করে reshape2তবে আরও অনেক কিছু করার জন্য ডিজাইন করা হয়েছে।


dcast(aqm, month ~ variable), এটি একত্রিত ফাংশন ছাড়া কি করবে?
কেড

@ ক্রাভিংস্পিরিট এটি প্রতিটি পরিবর্তনকের জন্য পর্যবেক্ষণের সংখ্যাটি ফিরিয়ে আনবে। পড়ুন ?dcastযা আপনাকে এটি বলত (যুক্তির জন্য বিশদটি দেখুন fun.aggregate)।
মনিকা পুনরায় ইনস্টল করুন - জি। সিম্পসন


7

আপনি ব্যবহার করতে হবে না meltএবং cast

তথ্য পুনঃনির্ধারণ অনেক উপায়ে করা যেতে পারে। আপনার cite ব্যবহার করে আপনার নির্দিষ্ট উদাহরণে recastসঙ্গে aggregateঅপ্রয়োজনীয় ছিল কারণ aggregateকাজের জরিমানা সব তে এটি নিজের ব্যাপার আছে।

aggregate(cbind(LPMVTUZ, LPMVTVC, LPMVTXC) ~ year, dtm, sum)
# or even briefer by first removing the columns you don't want to use
aggregate(. ~ year, dtm[,-2], sum)

আপনার ব্লগ পোস্টে আপনি কী meltকরছেন তা আপনি কীভাবে ব্যাখ্যা করবেন তা আমি পছন্দ করি । খুব কম লোকই এটি বুঝতে পারে এবং আপনি একবার এটি দেখেন তবে কীভাবে castকাজ হয় এবং আপনি চান কীভাবে আপনি নিজের ফাংশনগুলি কীভাবে লিখতে পারেন তা দেখতে সহজ হয় ।



2

কেবল এখানে লক্ষ্য করা যায় যে এখানে আরও কার্যকর ও বিস্তৃত পুনঃনির্মাণের পদ্ধতির কোনও রেফারেন্স data.tableনেই, সুতরাং আমি অনুরূপ প্রশ্নের জন্য স্ট্যাকওভারফ্লোতে জাচ / অরুণের চমৎকার উত্তরটি আরও মন্তব্য না করে পোস্ট করছি:

https://stackoverflow.com/questions/6902087/proper-fastest-way-to-reshape-a-data-table/6913151#6913151

এবং বিশেষত data.tableগিটহাব পৃষ্ঠায় দুর্দান্ত ভিগনেট রয়েছে:

https://github.com/Rdatatable/data.table/wiki/Getting-started

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.