এনএ এর নির্দিষ্ট কলামযুক্ত সারি ছাড়ুন


129

আমি NAএকটি ডেটা ফ্রেমে মানগুলি কীভাবে বাদ দিতে পারি তা জানতে চাই , তবে কেবলমাত্র কয়েকটি কলামে আমি আগ্রহী।

উদাহরণ স্বরূপ,

DF <- data.frame(x = c(1, 2, 3), y = c(0, 10, NA), z=c(NA, 33, 22))

কিন্তু আমি শুধুমাত্র বর্জন করতে ডেটা যেখানে চান yহয় NA, অতএব ফলাফলের হওয়া উচিত

  x  y  z
1 1  0 NA
2 2 10 33

na.omitসমস্ত সারি মুছে ফেলা মনে হয় NA।

এই সহজ প্রশ্ন থেকে কেউ আমাকে সাহায্য করতে পারে?

তবে এখন যদি আমি প্রশ্নটি পরিবর্তন করি তবে:

DF <- data.frame(x = c(1, 2, 3,NA), y = c(1,0, 10, NA), z=c(43,NA, 33, NA))

যদি আমি কেবল বাদ দিতে চাই x=naবা z=na, আমি কোথায় |ফাংশনটি রাখতে পারি?

উত্তর:


79

আপনি এই complete.casesফাংশনটি ব্যবহার করতে পারেন এবং এটিকে একটি ফাংশনে রেখেছিলেন:

DF <- data.frame(x = c(1, 2, 3), y = c(0, 10, NA), z=c(NA, 33, 22))

completeFun <- function(data, desiredCols) {
  completeVec <- complete.cases(data[, desiredCols])
  return(data[completeVec, ])
}

completeFun(DF, "y")
#   x  y  z
# 1 1  0 NA
# 2 2 10 33

completeFun(DF, c("y", "z"))
#   x  y  z
# 2 2 10 33

সম্পাদনা: কেবলমাত্র স ছাড়াই সারিগুলি প্রেরণ করুনNA

আপনি যদি NAকোনও কলামে কমপক্ষে একটি দিয়ে সমস্ত সারি মুছে ফেলতে চান তবে কেবলমাত্র complete.casesসরাসরি ফাংশনটি ব্যবহার করুন :

DF[complete.cases(DF), ]
#   x  y  z
# 2 2 10 33

অথবা যদি completeFunইতিমধ্যে আপনার কর্মপ্রবাহে অন্তর্ভুক্ত থাকে;)

completeFun(DF, names(DF))

আপনি কি আপনার পদ্ধতির লোভী করতে পারেন? এমন সমস্ত কলাম নিন যেখানে মোটামুটি এনএ নেই।
— লিও লোপোল্ড হার্টজ 준영

1
তুমি বোঝাতে চাও শুধু কোন এস ছাড়াই সারি ফিরবে NA? পছন্দ completeFun(DF, names(DF))?
— বেনবার্নস

সঠিক! দয়া করে এটি আপনার উত্তরে যুক্ত করার বিষয়টি বিবেচনা করুন কারণ এটি এখানে একটি সাধারণ প্রয়োজন। - - আমি মনে করি গলির উত্তরটি আপনার হিসাবে প্রসারিত হতে পারে না। আপনার ফাংশন পদ্ধতির দুর্দান্ত!
— লিও লোপোল্ড হার্টজ 준영

1
সম্পন্ন! টিপটির জন্য থ্যাক্স @ লোওলোপল্ড হার্টজ 준영
— বেনবার্নস

192

ব্যবহার is.na

DF <- data.frame(x = c(1, 2, 3), y = c(0, 10, NA), z=c(NA, 33, 22))
DF[!is.na(DF$y),]

1
আপনি কীভাবে ডেটা সেটের সমস্ত কলামে এই পদ্ধতির লোভের সাথে প্রয়োগ করবেন? কলামের মান যদি হয় তবে এএন এড়িয়ে যান। সুতরাং আপনার ডেটা সেট আউটপুট কেবল দ্বিতীয় কলাম।
— লিও লোপল্ড হার্টজ 준영

2
na.omitযে কোনও কলামে এনএ সহ সমস্ত সারি লোভজনকভাবে মুছে ফেলার জন্য ব্যবহার করুনna.omit(DF)
— এম ভাইকিং

69

হ্যাডলির tidyrসবেমাত্র এই আশ্চর্যজনক ফাংশনটি পেয়েছেdrop_na

library(tidyr)
DF %>% drop_na(y)
  x  y  z
1 1  0 NA
2 2 10 33

30

'সাবসেট' ব্যবহার করুন

DF <- data.frame(x = c(1, 2, 3), y = c(0, 10, NA), z=c(NA, 33, 22))
subset(DF, !is.na(y))

9

এটা ব্যবহার করা সম্ভব na.omitজন্য data.table:

na.omit(data, cols = c("x", "z"))

3
cols=যুক্তি পাওয়া যায় data.table::na.omitগ্রন্থাগার। বেস না stats::na.omit।
— এম ভাইকিং


2

দুটি নির্দিষ্ট কলামের মধ্যে যদি দুটি থাকে তবে সারি ছাড়ুন <NA>।

DF[!is.na(DF$x)&!is.na(DF$z),]

1

শুধু এটি চেষ্টা করুন:

DF %>% t %>% na.omit %>% t

এটি ডেটা ফ্রেম স্থানান্তর করে এবং নাল সারি বাদ দেয় যা স্থানান্তরের আগে 'কলাম' ছিল এবং তারপরে আপনি এটি আবার স্থানান্তরিত করতে পারেন।


8
কি চলছে তা একটু ব্যাখ্যা করুন
— ভনব্র্যান্ড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.