আর-তে আকারে ফাইল সারি সরিয়ে ফেলা হচ্ছে


12

আমি আর-তে একটি শেফফাইল আমদানি করেছি এবং এটি একটি টেবিলে যোগ দিয়েছি। আমার শেপফাইলে সমস্ত আদমশুমারি আইড থাকে, তবে আমার টেবিলে কেবল নির্বাচিত আদমশুমারীর আইডি থাকে। আমি এখন মুছে ফেলার চেষ্টা করছি সমস্ত সারি মিলছে না।

এটি আমার ডেটাসেটের মতো দেখাচ্ছে (আমি এনএ সহ সমস্ত সারি সরিয়ে দেওয়ার চেষ্টা করছি, তাই শেষ দুটি সরিয়ে ফেলতে হবে):

  CTUID   Cluster   Average
5350007.01  1       124.53
5350007.02  1       234.87
5350010.01  4       110.11
5350010.02  5       187.68
5350001     NA        NA
5350002     NA        NA

আমি এই লাইন কোডটি ব্যবহার করার চেষ্টা করেছি:

shape2[!(rowSums(is.na(shape2))==NCOL(shape2)),]

যা আমাকে এই ত্রুটি দিয়েছে:

Error in rowSums(is.na(shape2)) : 
  'x' must be an array of at least two dimensions
In addition: Warning message:
In is.na(shape2) : is.na() applied to non-(list or vector) of type 'S4'

আমি আর তে খুব পারদর্শী নই, সুতরাং যে কোনও সহায়তা সত্যিই প্রশংসিত হবে। আপনি যদি একটি সংক্ষিপ্ত ব্যাখ্যা অন্তর্ভুক্ত করতে পারেন যা দুর্দান্ত হবে।

উত্তর:


13

ত্রুটির তথ্যবহুল অংশটি হ'ল আপনি যে ডেটাটি পরিচালনা করছেন তা হ'ল একটি এস 4 শ্রেণি অবজেক্ট এবং এর মতো স্লট রয়েছে। এর অর্থ হ'ল আপনাকে আপনার ডেটাফ্রেমযুক্ত উপযুক্ত স্লট "@ ডেটা" চালনা করতে হবে।

আপনি যদি এনএ মান সহ "সমস্ত" সারি মুছে ফেলতে চান তবে আপনি ডেটা ফ্রেমের স্লটে na.omit ব্যবহার করতে পারেন। এটি এসপি অবজেক্টের মাধ্যমে প্রোপাগেট করে এবং অন্যান্য স্লটে সম্পর্কিত পয়েন্ট / বহুভুজগুলি সরিয়ে দেয়।

shape@data <- na.omit(shape@data)

আপনি যদি কোনও নির্দিষ্ট কলামে এনএ এর সাথে সারিগুলি সরাতে চান তবে আপনি ব্যবহার করতে পারেন:

shape@data <- shape[!is.na(shape@data$col) ,]

**** 03/08/2016 আপডেট করুন এখানে এখন একটি নেটিভ মার্জ ফাংশন রয়েছে যা এসপি অবজেক্টগুলিতে পরিচালনা করে। আপনি অন্য কোনও ডেটা.ফ্রেমের সাথে একইভাবে মার্জ কল করতে পারেন। তবে এক্স আর্গুমেন্টটি একটি স্প স্প্যাটেলডেটা ফ্রেম শ্রেণীর অবজেক্ট এবং y এমন কোনও ডেটা ফ্রেম যা আপনি মার্জ করতে চান। আমি মূল উত্তরটি রেফারেন্সের উদ্দেশ্যে রেখে যাচ্ছি।


আমার এও উল্লেখ করা উচিত যে আপনি কোনও এসপি অবজেক্টে যোগ দিতে মার্জ ফাংশনটি ব্যবহার করতে পারবেন না। মার্জ ফাংশন অপারেশন চলাকালীন ডেটা রিসর্ট করে যা এসপি অবজেক্টের অভ্যন্তরীণ সম্পর্ককে ভেঙে দেয়। দুর্ভাগ্যক্রমে, এটি ব্যাপকভাবে প্রচারিত নয় এমন একটি জিনিস। কোনও এসপি অবজেক্টের @ ডেটা স্লটে একটি ডেটাফ্রেম মার্জ করার জন্য আপনি এইভাবে ম্যাচটি ব্যবহার করতে পারেন।

shape@data = data.frame(shape@data, OtherData[match(sdata@data$IDS, OtherData$IDS),])

কোথায়; আকৃতিটি আপনার শেপ ফাইল, আইডিএস হল শনাক্তকারী যা আপনি মার্জ করতে চান এবং অন্যান্য ডেটা হ'ল ডেটা ফ্রেম যা আপনি আকারের সাথে একত্রিত করতে চান। নোট করুন যে দুটি ডেটাসেটে আইডিএস আলাদা আলাদা নাম হতে পারে তবে বাস্তবে একই মান হওয়া দরকার (অস্পষ্ট নয়)।

বিকল্পভাবে আপনি এই ফাংশনটি ব্যবহার করতে পারেন।

join.sp.df <- function(x, y, xcol, ycol) {
  x$sort_id <- 1:nrow(as(x, "data.frame"))  
    x.dat <- as(x, "data.frame")  
     x.dat2 <- merge(x.dat, y, by.x = xcol, by.y = ycol)  
    x.dat2.ord <- x.dat2[order(x.dat2$sort_id), ]  
  x2 <- x[x$sort_id %in% x.dat2$sort_id, ]  
  x2.dat <- as(x2, "data.frame") 
    row.names(x.dat2.ord) <- row.names(x2.dat)  
  x2@data <- x.dat2.ord  
  return(x2)
}

কোথায়; x = sp স্পটিয়ালডাটা ফ্রেম অবজেক্ট, এক্স = সাথে একত্রীকরণের জন্য y = ডেটাফ্রেম অবজেক্ট, এসপি অবজেক্টে কলামের নামটি মার্জ করুন (উদ্ধৃতি হওয়া দরকার), ycol = ডেটাফ্রেম অবজেক্টে কলামের নাম মার্জ করুন (উদ্ধৃতি দেওয়ার প্রয়োজন)।

কিছু কারণে আমি @ কেলি প্রশ্নে মন্তব্য করতে পারি না তাই আমি আমার মূল উত্তরটি সম্পাদনা করছি। আপনি আর আর এসপির কোন সংস্করণটি চালাচ্ছেন তা পরীক্ষা করে দেখুন? এটি জানতে আপনি সেশনআইএনফো () চালাতে পারেন। @ ডেটা অবজেক্টটি ম্যানিপুলেট করার সময় অন্যান্য ডেটা স্লটে যুক্ত সম্পর্কিত বস্তুগুলি সরিয়ে ফেলার আচরণটি কেবলমাত্র গত কয়েকটি এসপি সংস্করণে উপলব্ধ। যদি বর্তমান সংস্করণটি না চালানো হয় তবে প্যাকেজ মেনুতে "আপডেট প্যাকেজগুলি" দিয়ে প্যাকেজটি আপডেট করার চেষ্টা করুন। যদি চলমান> = উইন্ডোজ ভিস্তা প্রশাসক হিসাবে চালানো নিশ্চিত হন। আপনার পূর্বে এবং অবজেক্টের মাত্রা যেমন, ম্লান (আকৃতি) দেখুন যা সারি / কলসের সংখ্যা উপস্থাপন করে। সারিগুলির সংখ্যা বৈশিষ্ট্যযুক্ত সামগ্রীর সংখ্যার সাথে মিলিত হয়। আপনি স্থানান্তরের বস্তুতে সারি সংখ্যা @ ডেটা স্লটে যেমন স্লোগান (আকৃতি) এর সাথে সারি সংখ্যার সাথে মেলে কিনা তা পরীক্ষা করে ফলাফলগুলি পরীক্ষা করতে পারেন;


আপনার সাহায্যের জন্য ধন্যবাদ! আমি স্থানিক যোগদান পুনর্নির্মাণ করেছি কারণ আমি 'ম্যাচের' পরিবর্তে 'মার্জ' ব্যবহার করেছি। আমি সমস্ত এনএ সারিগুলি সরিয়ে ফেলেছি, তবে যখন আমি এটি প্লট করব তখন আকৃতিটি আকারে উপস্থিত রয়েছে। কেন এমন হচ্ছে এর কোন চিন্তাভাবনা?
কেলি

এই উত্তরের একটি সংশোধন এসপি 1.0-15-এ প্রয়োজনীয়। মার্জ ফাংশনটির একটি স্পেস নির্দিষ্ট সংস্করণকে এখন বলা হয়, যখন কোনও এসপ শ্রেণীর অবজেক্টটি পাস করা হয়, যা সঠিকভাবে সম্পাদন করে যে আপনি স্লটগুলির মাত্রা সম্পর্কিত স্লটগুলির সাথে সামঞ্জস্য রাখতে এক থেকে এক ম্যাচ করেন।
জেফরি ইভান্স

7

প্যাকেজগুলির আপডেটগুলির সাথে আমি নিম্নলিখিতগুলি প্রস্তাব করব:

shape <- shape[!is.na(shape@data$col),]

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