আমার একটি ডেটা টেবিল রয়েছে :
groups <- data.table(group = c("A", "B", "C", "D", "E", "F", "G"),
code_1 = c(2,2,2,7,8,NA,5),
code_2 = c(NA,3,NA,3,NA,NA,2),
code_3 = c(4,1,1,4,4,1,8))
group code_1 code_2 code_3
A 2 NA 4
B 2 3 1
C 2 NA 1
D 7 3 4
E 8 NA 4
F NA NA 1
G 5 2 8
আমি যেটি অর্জন করতে চাই তা প্রতিটি গ্রুপের জন্য উপলব্ধ কোডগুলির ভিত্তিতে অবিলম্বে প্রতিবেশীদের সন্ধান করা। উদাহরণস্বরূপ: গ্রুপ এ এর নিকটবর্তী প্রতিবেশী গোষ্ঠী বি, সি আছে কোডের কারণে (কোড_1 সকল গ্রুপের সাথে সমান 2) এবং কোড_3 এর কারণে তাত্ক্ষণিক প্রতিবেশী গ্রুপ ডি, ই রয়েছে (কোড_3 সমস্ত গ্রুপে 4 এর সমান)।
আমি যা চেষ্টা করেছি তা প্রতিটি কোডের জন্য, ম্যাচের উপর ভিত্তি করে প্রথম কলাম (গ্রুপ) উপসেট করে:
groups$code_1_match = list()
for (row in 1:nrow(groups)){
set(groups, i=row, j="code_1_match", list(groups$group[groups$code_1[row] == groups$code_1]))
}
group code_1 code_2 code_3 code_1_match
A 2 NA 4 A,B,C,NA
B 2 3 1 A,B,C,NA
C 2 NA 1 A,B,C,NA
D 7 3 4 D,NA
E 8 NA 4 E,NA
F NA NA 1 NA,NA,NA,NA,NA,NA,...
G 5 2 8 NA,G
এই "কিন্ডা" কাজ করে তবে আমি ধরে নেব এটি করার মতো আরও একটি ডাটা টেবিল রয়েছে। আমি চেষ্টা করেছিলাম
groups[, code_1_match_2 := list(group[code_1 == groups$code_1])]
তবে এটি কাজ করে না।
আমি কি এর মোকাবেলায় কিছু স্পষ্ট ডেটা টেবিল ট্রিক মিস করছি?
আমার আদর্শ কেস ফলাফলটি এর মতো দেখাবে (যার জন্য বর্তমানে সমস্ত 3 কলামের জন্য আমার পদ্ধতিটি ব্যবহারের প্রয়োজন হবে এবং তারপরে ফলাফলগুলি সংক্ষেপণ করতে হবে):
group code_1 code_2 code_3 Immediate neighbors
A 2 NA 4 B,C,D,E
B 2 3 1 A,C,D,F
C 2 NA 1 A,B,F
D 7 3 4 B,A
E 8 NA 4 A,D
F NA NA 1 B,C
G 5 2 8
igraph
, এটি সত্যই আকর্ষণীয় হতে পারে।