แยกออกเป็นคอลัมน์ของใช้เส้นสาย(กับต่างออกรูปแบบ)จากพื้นฐานสองคนเงื่อนไขที่แตกต่างกัน

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 ให้เห็นถึงพาร์ทิชันที่มีอยู่เชือกออกเป็นสอง"จับกลุ่ม"อีกอย่างเป็น underscore อยู่ระหว่าง:

  • (.*?)ที่ถูกจับกลุ่มที่เข้าคู่อักขระใดๆ(.)ศูนย์ครั้งหรือมากกว่า(*)ไม่ greedily(?)
  • _:การยึดตามตัวอักษรแบบนั้ underscore
  • ([^_]+)$:ที่สองการจับกุมกลุ่มตรงกับการมีตัวละครนั่น ไม่ได้ เป็น underscore([^_])หนึ่งครั้งหรือมากกว่า(+)ที่สุดของเขาข้อความ($)

ข้อมูล:

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ý
..................................................................................................................

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่