दिलचस्प पोस्ट
कैसे दो निर्दिष्ट तारीख के बीच की तारीखों को खोजने के लिए? एक एकल को एक int में परिवर्तित कैसे करें आवेदन कैसे करें! महत्वपूर्ण सीएसएस () का उपयोग? क्या IFrames (HTML) अप्रचलित हैं? वर्ग चर और वर्ग उदाहरण चर के बीच अंतर? 'str' ऑब्जेक्ट पायथन में आइटम असाइनमेंट का समर्थन नहीं करता है सी # में हार्डवेयर-आईडी को तेजी से कैसे प्राप्त करें? एकाधिक वर्णों पर उपयोग किए जाने पर एकल उद्धरण सी ++ में करते हैं? किसी भी सर्लेट से संबंधित वर्ग में नाम से जेएसएफ प्रबंधित बीन प्राप्त करें सर्विस स्टैक बनाम एएसपी.नेट वेब एपीआई पास स्ट्रिंग को एक जावा ऐप से दूसरे में पैरामीटर के रूप में पास करें क्या यह तय करने का कोई तरीका है कि आईफोन रोमिंग है या नहीं? कैसे जावास्क्रिप्ट को रोकने के लिए हर? इस प्रमाण पत्र में एक अमान्य जारीकर्ता एप्पल पुश सर्विसेज है सी # HttpWebRequest आदेश निर्देशिका लिस्टिंग पाने के लिए

डुप्लिकेट पंक्तियों को निकालें

मैंने एक आर डेटा डाटा में एक CSV फाइल पढ़ ली है I कुछ पंक्तियों में स्तंभों में से एक में एक ही तत्व है। मैं उन स्तंभों को निकालना चाहूंगा जो उस कॉलम में डुप्लिकेट हैं I उदाहरण के लिए:

 platform_external_dbus 202 16 google 1 platform_external_dbus 202 16 space-ghost.verbum 1 platform_external_dbus 202 16 localhost 1 platform_external_dbus 202 16 users.sourceforge 8 platform_external_dbus 202 16 hughsie 1 

मुझे इन पंक्तियों में से केवल एक ही चाहिये क्योंकि दूसरे कॉलम में समान डेटा मौजूद हैं I

वेब के समाधान से एकत्रित समाधान "डुप्लिकेट पंक्तियों को निकालें"

बस अपने डेटा फ़्रेम को स्तंभों को अलग करें जिन्हें आप की आवश्यकता है, फिर अद्वितीय फ़ंक्शन का उपयोग करें: डी

 # in the above example, you only need the first three columns deduped.data <- unique( yourdata[ , 1:3 ] ) # the fourth column no longer 'distinguishes' them, # so they're duplicates and thrown out. 

डुप्लिकेट पंक्ति हटाने के लिए सामान्य जवाब ढूंढने के लिए यहां आने वाले लोगों के लिए, उपयोग करें !duplicated() :

 a <- c(rep("A", 3), rep("B", 3), rep("C",2)) b <- c(1,1,2,4,1,1,2,2) df <-data.frame(a,b) duplicated(df) [1] FALSE TRUE FALSE FALSE FALSE TRUE FALSE TRUE > df[duplicated(df), ] ab 2 A 1 6 B 1 8 C 2 > df[!duplicated(df), ] ab 1 A 1 3 A 2 4 B 4 5 B 1 7 C 2 

से उत्तर: आर डेटा फ्रेम से डुप्लिकेट की गई पंक्तियां निकालना

Dplyr पैकेज में distinct() समारोह मनमाना डुप्लिकेट निष्कासन करता है, जिससे डुप्लिकेट किए गए चर के विनिर्देश की अनुमति देता है (इस प्रश्न के अनुसार) या सभी चर पर विचार कर रहा है।

डेटा:

 dat <- data.frame(a = rep(c(1,2),4), b = rep(LETTERS[1:4],2)) 

पंक्तियों को निकालें जहां निर्दिष्ट कॉलम दोहराए गए हैं:

 library(dplyr) dat %>% distinct(a, .keep_all = TRUE) ab 1 1 A 2 2 B 

पंक्तियां निकालें जो अन्य पंक्तियों के पूर्ण डुप्लिकेट हैं:

 dat %>% distinct ab 1 1 A 2 2 B 3 1 C 4 2 D 

data.table पैकेज में unique और duplicated तरीके भी हैं जिनमें कुछ अतिरिक्त विशेषताएं हैं।

दोनों अद्वितीय. unique.data.table और duplicated.data.table विधियों तर्क by एक अतिरिक्त by जो आपको एक character या स्तंभ नाम के integer वेक्टर या उनके स्थान क्रमशः पास करने की अनुमति देता है

 library(data.table) DT <- data.table(id = c(1,1,1,2,2,2), val = c(10,20,30,10,20,30)) unique(DT, by = "id") # id val # 1: 1 10 # 2: 2 10 duplicated(DT, by = "id") # [1] FALSE TRUE TRUE FALSE TRUE TRUE 

इन विधियों का एक और महत्वपूर्ण विशेषता बड़ा डेटा सेट के लिए एक बड़ा प्रदर्शन लाभ है

 library(microbenchmark) library(data.table) set.seed(123) DF <- as.data.frame(matrix(sample(1e8, 1e5, replace = TRUE), ncol = 10)) DT <- copy(DF) setDT(DT) microbenchmark(unique(DF), unique(DT)) # Unit: microseconds # expr min lq mean median uq max neval cld # unique(DF) 44708.230 48981.8445 53062.536 51573.276 52844.591 107032.18 100 b # unique(DT) 746.855 776.6145 2201.657 864.932 919.489 55986.88 100 a microbenchmark(duplicated(DF), duplicated(DT)) # Unit: microseconds # expr min lq mean median uq max neval cld # duplicated(DF) 43786.662 44418.8005 46684.0602 44925.0230 46802.398 109550.170 100 b # duplicated(DT) 551.982 558.2215 851.0246 639.9795 663.658 5805.243 100 a 

sqldf साथ:

 # Example by Mehdi Nellen a <- c(rep("A", 3), rep("B", 3), rep("C",2)) b <- c(1,1,2,4,1,1,2,2) df <-data.frame(a,b) 

उपाय:

  library(sqldf) sqldf('SELECT DISTINCT * FROM df') 

आउटपुट:

  ab 1 A 1 2 A 2 3 B 4 4 B 1 5 C 2 

या आप tidyr साथ एक पंक्ति में कॉलम 4 और 5 में डेटा घोंसला कर सकते हैं:

 library(tidyr) df %>% nest(V4:V5) # A tibble: 1 × 4 # V1 V2 V3 data # <fctr> <int> <int> <list> #1 platform_external_dbus 202 16 <tibble [5 × 2]> 

2 और 3 डुप्लिकेट को अब सांख्यिकीय विश्लेषण के लिए हटा दिया गया है, लेकिन आपने टिब्बल में कॉल 4 और 5 डेटा को रखा है और मूल डेटा फ्रेम पर किसी भी समय unnest() साथ वापस जा सकते हैं।

प्रत्येक वर्ष में सप्ताह के डुप्लिकेट को हटाने के लिए

पुस्तकालय (dplyr)

पहली घटनाएं रखें

new_weeks_data <- सप्ताह_डेटा%>% समूह_ द्वारा (वर्ष)%>% फिल्टर (डुप्लिकेट (सप्ताह))

आखिरी घटनाएं रखें

new_weeks_data <- सप्ताह_डेटा%>% समूह_ द्वारा (वर्ष)%>% फिल्टर (डुप्लिकेट (वीक, से एलआईटी = टी))