विभाजन के एक स्तंभ के तार के साथ (अलग अलग पैटर्न) के आधार पर दो अलग अलग स्थिति

0

सवाल

उम्मीद कर रहा था, कुछ पाने के लिए इस समस्या के साथ मदद. तो मैं एक स्तंभ के साथ दो प्रकार के तार और मैं विभाजित करने की जरूरत तार में एकाधिक स्तंभों का उपयोग कर के 2 अलग-अलग स्थिति. मैं कर सकते हैं बाहर आंकड़ा कैसे उन्हें विभाजित करने के लिए व्यक्तिगत रूप से, लेकिन संघर्ष जोड़ने के लिए हो सकता है एक अगर बयान करने के लिए मेरे कोड. इस उदाहरण डाटासेट नीचे:

data = data.frame(string=c("HFUFN-087836_661", "207465-125 - IK_6 Mar 2009.docx_37484956"))

पहली प्रकार के चर के साथ ( _ ). मैं होगा की तरह विभाजित करने के बाद,_. तो मैं निम्नलिखित कोड के लिए है कि

strsplit(data$string, "-")

के लिए है कि चर have.docx उन में मैं होगा की तरह विभाजित करने के बाद docx. मैं विभाजित नहीं कर सकते के आधार पर "_" के रूप में यह कई बार आता है इस स्ट्रिंग है । तो मैं निम्नलिखित कोड:

strsplit(data$string, "x_")

मेरा सवाल यह है कि इन दोनों प्रकार के तार दिखाई देते हैं, उसी स्तंभ में है. वहाँ एक तरीका है बताने के लिए R "अगर docx" है स्ट्रिंग में फिर विभाजन के बाद x_, लेकिन अगर इसकी नहीं पर विभाजित _?

किसी भी मदद की सराहना की जाएगी - आप लोगों को धन्यवाद!

data-manipulation r string strsplit
2021-11-23 21:43:22
1

सबसे अच्छा जवाब

0

यहाँ एक tidyr समाधान:

library(tidyr)
data %>%
extract(string,
        into = c("1","2"),    # choose your own column labels
        "(.*?)_([^_]+)$")
                                1        2
1                    HFUFN-087836      661
2 207465-125 - IK_6 Mar 2009.docx 37484956

कैसे regex काम करता है:

Regex विभाजन के तार में दो "पर कब्जा समूहों" प्लस एक अंडरस्कोर के बीच में:

  • (.*?): पहली पर कब्जा समूह, मिलान के किसी भी चरित्र (.) शून्य या अधिक बार (*) गैर-लालच (?)
  • _: एक शाब्दिक अंडरस्कोर
  • ([^_]+)$: दूसरा कब्जा समूह, मिलान के किसी भी चरित्र है कि नहीं एक अंडरस्कोर ([^_]) एक या एक से अधिक बार (+) के बहुत अंत में वह स्ट्रिंग ($)

डेटा:

data = data.frame(string=c("HFUFN-087836_661", "207465-125 - IK_6 Mar 2009.docx_37484956"))
2021-11-24 16:36:45

अरे यह काम किया है - बहुत बहुत धन्यवाद. अगर इसकी नहीं बहुत ज्यादा काम कर सकते हैं आप कृपया समझाने कैसे आप इस किया है? मैं काफी नहीं मिलता है इस भाग में: ""(.*?)_([^_]+)$")". बहुत बहुत धन्यवाद!
T K

प्रदान की है कैसे की एक व्याख्या वें regex हिस्सा काम करता है
Chris Ruehlemann

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में