ডেটা ফ্রেমে কোনও কলাম বিদ্যমান আছে কিনা তা সন্ধান করতে


110

আমার "ডেপ্রেস" নামটি সহ একটি ডেটা ফ্রেম রয়েছে

     a  b  c
     1  1  1
     2  2  3

প্রদত্ত ডেটা ফ্রেমে কলাম বিদ্যমান আছে কি নেই তা আমি কীভাবে খুঁজে পেতে পারি? উদাহরণস্বরূপ, আমি একটি কিনা এটি চাই কলাম ঘ data.frame বিদ্যমান abcframe


1
আপনার ডেটা ফ্রেমের নামের সাথে একটি কলাম রয়েছে dকিনা তা আপনি জানতে চান বা প্রদত্ত ভেক্টরটি dআপনার ডেটা ফ্রেমের একটি কলামের সমান কিনা তা আপনি জানতে চান ?

আমি জানতে চাই যে ডেটাফ্রেমের নাম ডি আছে বা না রয়েছে
সানি সানি

আপনার 100 টি ভোটের সাথে সুন্দর সানির দিনটি কামনা করুন! :-)
টিএমএস

উত্তর:


196

ধরে নিই যে আপনার ডেটা ফ্রেমের নাম datএবং আপনার কলামের নামটি যাচাই করা আছে "d", আপনি %in%অপারেটরটি ব্যবহার করতে পারেন :

if("d" %in% colnames(dat))
{
  cat("Yep, it's in there!\n");
}

6
আপনি যদি বিপরীত দিকে তাকান, যেমন কলামটি না থাকে তবে কেবল !শুরুতে যুক্ত করুন:if(!"d"%in% colnames(dat))
টোটো_টিকো

দুর্দান্ত উত্তর। আমি কীভাবে এটি প্রসারিত করব যদি আমি কলাম 'd' এবং 'ই' এবং 'চ' সন্ধান করি? যে করা হবে: if("d" & "e" & "f" %in% colnames(dat)) { cat("Yep, it's in there!\n"); }। ধন্যবাদ! - ওহ, আমি নিজেই উত্তরটি খুঁজে পেতে পারি: stackoverflow.com/questions/21770912/…
স্যান্ডার ডাব্লু ভ্যান ডের লান

6
সমস্ত (সি ("ডি", "ই", "চ")% তে% কলনেম (ডাট))
স্ক্যান

24

আপনার কাছে ব্যবহার %in%এবং এইগুলি সহ অনেকগুলি বিকল্প রয়েছে grepl:

dat <- data.frame(a=1:2, b=2:3, c=4:5)
dat
  a b c
1 1 2 4
2 2 3 5

কলামগুলির নাম পেতে:

names(dat)
[1] "a" "b" "c"

%in%সদস্যপদ পরীক্ষা করার জন্য ব্যবহার করুন :

"d" %in% names(dat)
[1] FALSE

Or use `grepl` to check for a match:

grepl("d", names(dat))
[1] FALSE FALSE FALSE

11
পেতে greplএকটি আরো সঠিক বিট, আপনি ব্যবহার করতে পারে grepl("^d$",names(dat)), তা নিশ্চিত করার জন্য নামের সঙ্গে একটি কলাম ddফেরত দেয় না TRUE
বেনবার্নস

এই জন্য ধন্যবাদ, colnamesআমার জন্য কাজ না করে কিন্তু names
ডকনকোকট

@ অ্যান্ড্রি কলামগুলি দুটি বৃহত ডাটাফ্রেমে তুলনা করার জন্য কি অন্য কলাম থেকে কোন কলামের নাম অনুপস্থিত রয়েছে তা দেখার উপায় আছে?
এসএআর

8

আপনি ব্যবহার করতে পারেন any:

> names(dat)
[1] "a" "b" "c"
> any(names(dat) == 'b')
[1] TRUE
> any(names(dat) == 'B')
[1] FALSE

2

আপনি উপস্থিত আছে if(!is.null(abcframe$d))কিনা তা পরীক্ষা করতেও ব্যবহার করতে পারেন ।dabcframe

dat <- data.frame(a = 1:2, b = 2:3, c = 4:5)

if (!is.null(dat$d)) {
  print("d exists")
} else {
  print("d does not exist")
}
if (!is.null(dat$a)) {
  print("a exists")
} else {
  print("a does not exist")
}

2
মজার বিষয় হল এটি পরিপাটি tibble সঙ্গে ব্যর্থ, কারণ 'dat $ d' একটি সতর্কতা নিক্ষেপ করবে।
মিরাট্রিক্স
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.