কখনও কখনও আমাকে কোনও সনাক্তকারী দ্বারা গোষ্ঠীযুক্ত ডেটা সেট করার প্রথম সারিটি পাওয়া দরকার, যেমন পৃথকভাবে একাধিক পর্যবেক্ষণ থাকে যখন বয়স এবং লিঙ্গ পুনরুদ্ধার করার সময়। আর-তে এটি করার একটি দ্রুত (বা দ্রুততম) উপায় কী? আমি নীচে সামগ্রিক () ব্যবহার করেছি এবং সন্দেহ করি এর আরও ভাল উপায় আছে। এই প্রশ্নটি পোস্ট করার আগে আমি গুগলে কিছুটা অনুসন্ধান করেছি, খুঁজে পেয়েছি এবং ddply চেষ্টা করেছি, এবং অবাক হয়ে গিয়েছিলাম যে এটি অত্যন্ত ধীর এবং আমার ডেটাসেটে (400,000 সারি x 16 কলস, 7,000 অনন্য আইডি) মেমরির ত্রুটি দিয়েছে, যেখানে সমষ্টিগত () সংস্করণ রয়েছে যুক্তিসঙ্গত দ্রুত ছিল।
(dx <- data.frame(ID = factor(c(1,1,2,2,3,3)), AGE = c(30,30,40,40,35,35), FEM = factor(c(1,1,0,0,1,1))))
# ID AGE FEM
# 1 30 1
# 1 30 1
# 2 40 0
# 2 40 0
# 3 35 1
# 3 35 1
ag <- data.frame(ID=levels(dx$ID))
ag <- merge(ag, aggregate(AGE ~ ID, data=dx, function(x) x[1]), "ID")
ag <- merge(ag, aggregate(FEM ~ ID, data=dx, function(x) x[1]), "ID")
ag
# ID AGE FEM
# 1 30 1
# 2 40 0
# 3 35 1
#same result:
library(plyr)
ddply(.data = dx, .var = c("ID"), .fun = function(x) x[1,])
আপডেট: চেসের উত্তর এবং ম্যাট পার্কারের মন্তব্য দেখুন যা আমি সবচেয়ে মার্জিত পদ্ধতির হিসাবে বিবেচনা করি। data.table
প্যাকেজটি ব্যবহার করে দ্রুততম সমাধানের জন্য @ ম্যাথু ডাওলের উত্তর দেখুন ।
diff()
যাতে আপনি প্রথম আইডিটি বেছে নিতে পারেন dx
।