আরকিজিআইএস ফিল্ড ক্যালকুলেটরের পাইথন পার্সারে বেসিক যদি / তারপরে?


18

আমি ডেস্কটপের জন্য আর্কজিআইএস 10.2 ব্যবহার করছি এবং আমি এই সাইটটি সন্ধান করছি এবং এখনও আমার উত্তর বের করতে পারে না বলে মনে হচ্ছে। ভিবিএ এবং পাইথনে খুব নতুন, তবে আর্কজিআইএস সহ অনেক বছর। আমি জানি আমি এটি ধীরে ধীরে সিলেক্ট অ্যাট্রিবিউটসের সাহায্যে করতে পারি, তবে এটি সময় সাপেক্ষ।

আমি একটি রোগের ক্ষেত্রে (পয়েন্ট স্তর) এবং ইউএস সেন্সাস ট্র্যাক্টস (বহুভুজ স্তর) এর মধ্যে একটি স্থানিক যোগদানের চেষ্টা করছি। এর জন্য গণনা ডেটা প্রয়োজন। প্রতিটি পয়েন্ট / কেসের জন্য, আমার ক্ষেত্রে মাঠের ওয়াইআর নামক একটি ক্ষেত্র রয়েছে যার তারিখ 2001 থেকে 2012 রেঞ্জের ক্ষেত্রে কেসটি ঘটেছিল তার উপর নির্ভর করে। আমার প্রতি বছরের জন্য একটি গণনা কলাম দরকার। উদাহরণস্বরূপ, আমি প্রথমে COUNT01 কল করছি। যদি YEAR এ মামলার তারিখ 2001 হয়, তবে COUNT01 এর মধ্যে এটির 1 থাকবে। যদি এটি অন্য কোনও বছর (2002-2012) হয়, তবে সেখানে 0 হওয়া দরকার 0. আমার কাছে COUNT02, COUNT03 ... COUNT12 কলাম থাকবে। "নাল" মান থাকতে পারে না।

আমি এ পর্যন্ত চেষ্টা করেছি এখানে

এখানে চিত্র বর্ণনা লিখুন

এবং এখানে ডেটা আর্ক-এর মতো দেখতে লাগে।

এখানে চিত্র বর্ণনা লিখুন


3
আমি আপনাকে পাইথন ব্যবহার করে এটি করার পরামর্শ দিচ্ছি vbaএবং vbscriptট্যাগগুলিকে একটি ট্যাগ দিয়ে প্রতিস্থাপন করতে আপনার প্রশ্নটি সম্পাদনা করুন python। যদিও এখনও যায়নি ভিবিএস স্ক্রিপ্ট অবমূল্যায়নের প্রক্রিয়াধীন । আমি প্রত্যাশা করি পাইথন পার্সারটির সাথে কাজ করা সহজ হয়ে যাবে আপনি যখন আরও বিশদ বিবরণ প্রদান করেন যা প্রকৃত ইনপুট এবং প্রত্যাশিত আউটপুট প্রদর্শিত কিছু নমুনা সারিগুলির একটি চিত্র / সারণী অন্তর্ভুক্ত করে। YEAR একটি তারিখ ক্ষেত্র বা বছরের সাথে সম্পর্কিত মান সহ একটি পূর্ণসংখ্যার ক্ষেত্র?
পলিজিও

পরামর্শ এবং সাহায্যের জন্য ধন্যবাদ। আমি বৈশিষ্ট্য সারণীর একটি চিত্র যুক্ত করেছি added YEAR ইনপুট ভেরিয়েবলটি বর্তমানে একটি ডাবল হিসাবে সংরক্ষণ করা হয়েছে (এটি একটি এসএএস তারিখ থেকে পার্স করা হয়েছিল) এবং আউটপুট ভেরিয়েবল কলাম কাউন্টারস 01 সংক্ষিপ্ত পূর্ণসংখ্যা হিসাবে সংরক্ষণ করা হয়।
বেনডব্লিউ 3'14

1
আপনি কি YEAR সহ সংক্ষিপ্তসার পরিসংখ্যানকে আপনার কেস ফিল্ড হিসাবে বিবেচনা করেছেন? এটি আপনাকে পাইথন বা ফিল্ড ক্যালকুলেটর ব্যবহার না করে প্রতি বছরের জন্য COUNT দিতে হবে।
পলিজিও

আপনার উপদেশের জন্য ধন্যবাদ. আমি সংক্ষিপ্ত পরিসংখ্যান বিবেচনা করেছি, তবে চূড়ান্ত লক্ষ্যটি হল প্রতি বার্ষিক কেস 1,249 পৃথক আদমশুমারি ট্র্যাক্ট অনুযায়ী গণনা করা যেখানে আমি বার্ষিক এবং 100 কে প্রতি 10 বছরের গড় ঘটনার হার গণনা করতে পারি। কিছু আদমশুমারীর ট্র্যাক্টের কোনও মামলা হয়নি, কারও কারও কাছে টন রয়েছে, তবে আমার সবগুলি অন্তর্ভুক্ত করা দরকার। এমনকি বছরের পর বছর সংক্ষিপ্তসারগুলিও কোনও মামলা ছাড়াই 278 টি ট্র্যাক্ট বাদ দেয়।
বেনডাব্লু

উত্তর:


38

আমি মনে করি এটিই আপনি চান .... অজগরটি ব্যবহার করে আপনি নিম্নলিখিতটি করতে পারেন (ধরে নিন YEAR এবং COUNT0X ক্ষেত্রগুলি পূর্ণসংখ্যা হয়)

  • নীচে হাইলাইট হিসাবে পাইথনে পরিবর্তন করুন
  • কোডটি 'প্রাক লজিক' ইনপুট বাক্সে যুক্ত করুন
  • আপনার গণনা করা প্রতিটি ক্ষেত্রের জন্য প্রয়োজন অনুযায়ী বছরবালটি পরিবর্তন করুন (গণনা01 2001 ব্যবহার করবে, কাউন্ট02 2002 ব্যবহার করবে ইত্যাদি)

দ্রষ্টব্য পাইথন কোডটি বিশ্লেষণ করতে ইন্ডেন্টেশন ব্যবহার করে যাতে ব্যবধানটি সঠিক ensure

def myCalc(year,yearVal):
  if (year == yearVal):
    return 1
  else:
    return 0

এই


3
@ বেনডাব্লু - যদি এটি আপনার সমস্যার সমাধান করে তবে দয়া করে এটিকে উত্তর হিসাবে চিহ্নিত করুন (উত্তরের ভোট গণনার অধীনে চেক বাক্স)।
চাদ কুপার

আমি যদি বিবৃতিতে একটি বর্ণনামূলক অক্ষর ধারণ করে তবে একটি স্ট্রিংয়ের মান পরীক্ষা করতে চাইলে কী করব?
গ্রেইলাইন

ক্ষেত্রগুলি যদি অন্য ধরণের হয় তবে পাঠ্য, ডাবল ইত্যাদি?
খালিফ

@ খালিফ আপনি পাইথন কোডে কিছু ধরণের রূপান্তর ফাংশন সন্নিবেশ করতে পারেন উদাহরণস্বরূপ if (int(year) == yearVal): , বা অন্যরা (দেখুন: informit.com/articles/article.aspx?p=459269&seqNum=7 )।
gisnside

ধন্যবাদ. আপনার কি এমন কোনও লিঙ্ক রয়েছে যেখানে আমি মাইক্যাল্যাক, মাইফাঙ্ক, রিস্লাস ইত্যাদি ব্যবহার করব সে সম্পর্কে জানতে পারি?
খালিফ

8

এই উত্তরটি মূলত উপরের তালিকার মতো একই, তবে কোড ব্লকটি ব্যবহার না করার উপায় ... গণনা 1 ক্ষেত্রের জন্য, আপনি পাইথনে পার্সার সেট করে এবং তারপরে আপনার গণনাটি সেট করবেন

1 if !YEAR! == 2001 else 0

এই পঠনের উপায়টি হ'ল: YEAR ক্ষেত্র 2001 যদি ক্ষেত্র 2001 না হয় তবে ক্ষেত্রটিকে 1 তে সেট করুন, তবে এটি 0 তে সেট করুন ...

শর্তগুলির যদি আপনার একাধিক হয় তবে আপনি দ্বিতীয় বিবৃতিতে অবস্থিত "যদি" শর্তগুলি ২ য় (এবং পরবর্তীকালে) বাসাতে পারেন, যেমন ...

1 if !YEAR! == 2001 else (2 if !YEAR! == 2002 else 0)

এই পঠনের উপায়টি হ'ল: YEAR ক্ষেত্রটি 2001 না হলে ক্ষেত্রটিকে 1 তে সেট করুন, যদি এটি 2001 নয়, তবে এটি 2002 এ যদি 2 তে সেট করুন, যদি না হয় তবে 0 তে সেট করুন ...


আমার একাধিক শর্ত থাকলে এই গণনাটি কীভাবে সংশোধন করব, আমি বলতে চাইছি আমরা "এলিফ" ব্যবহার করছি?
খালিফ

আপনার যদি একের অধিক শর্ত থাকে তবে আপনি দ্বিতীয় বিবৃতিতে "যদি" শর্তগুলি নীচে 1 if !YEAR! == 2001 else (2 if !YEAR! == 2002 else (3 if !YEAR! == 2003 else 0))
জেসন মিলার

6

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

সঠিক ক্ষেত্র ক্যালকুলেটর ব্যবহার


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