ฉันต้องการระบุและทำเครื่องหมายแถวที่ซ้ำกันโดยยึดตาม 2 คอลัมน์ ฉันต้องการสร้างตัวระบุที่ไม่ซ้ำกันสำหรับแต่ละรายการที่ซ้ำกันดังนั้นฉันจึงรู้ว่าไม่ใช่ว่าแถวนั้นซ้ำกัน แต่แถวใดที่ซ้ำกัน ฉันมี dataframe ที่มีลักษณะเหมือนด้านล่างพร้อมคู่รายการที่ซ้ำกันบางรายการ (แบบพอดีและแบบนั่ง) และคู่อื่น ๆ ที่ไม่ได้ทำซ้ำ ในขณะที่คู่ไอเท็มมีการทำซ้ำข้อมูลที่มีอยู่จะไม่ซ้ำกัน (เช่นหนึ่งแถวจะมีค่าใน Value1 สำหรับ 1 แถว แต่ไม่ใช่ Value2 และ Value 3 แถวที่สองหรือ 'ซ้ำ' จะมีตัวเลขสำหรับ Value2 และ Value3 เพียง ไม่ใช่ค่า 1)
dataframe ปัจจุบัน
value1 value2 value3 fit sit
[1,] "1" NA NA "it1" "it2"
[2,] NA "3" "2" "it2" "it1"
[3,] "2" "3" "4" "it3" "it4"
[4,] NA NA NA "it4" "it3"
[5,] "5" NA NA "it5" "it6"
[6,] NA NA "2" "it6" "it5"
[7,] NA "4" NA "it7" "it9"
รหัสเพื่อสร้างดาต้าเฟรมตัวอย่าง
value1<-c(1,NA,2,NA,5,NA,NA)
value2<-c(NA,3,3,NA,NA,NA, 4)
value3<-c(NA,2,4,NA,NA,2, NA)
fit<-c("it1","it2","it3","it4", "it5", "it6","it7")
sit<-c("it2","it1","it4","it3", "it6", "it5", "it9")
df.now<-cbind(value1,value2,value3, fit, sit)
สิ่งที่ฉันต้องการคือการแปลงเป็น dataframe ที่มีลักษณะเช่นนี้:
dataframe ที่ต้องการ
val1 val2 val3 it1 it2
[1,] "1" "3" "2" "it1" "it2"
[2,] "2" "3" "4" "it3" "it4"
[3,] "5" NA "2" "it5" "it6"
[4,] NA "4" NA "it7" "it9"
ฉันกำลังคิดที่จะทำตามขั้นตอนต่อไปนี้: 1. สร้างตัวแปรใหม่โดยใช้พอดีและนั่งกับรายการต่ำสุดและรายการสูงสุดเพื่อระบุคู่ที่ซ้ำกัน 2. ระบุคู่ของรายการที่ซ้ำกัน 3. ใช้ ifelse เพื่อเลือกและกรอกข้อมูลที่ไม่ซ้ำ
ฉันรู้วิธีการทำตามขั้นตอนที่ 1 และ 3 แต่ติดอยู่ในขั้นตอนที่ 2 ฉันคิดว่าสิ่งที่ฉันต้องทำไม่เพียง แต่ระบุ TRUE / FALSE ซ้ำกัน แต่อาจมีคอลัมน์ที่มีตัวระบุที่ไม่ซ้ำกันสำหรับคู่รายการแต่ละรายการเช่นนี้ เป็น 2 แถวพิเศษเนื่องจากขั้นตอนที่ 1 ของฉัน):
value1 value2 value3 fit sit lit hit dup
[1,] "1" NA NA "it1" "it2" "it1" "it2" 1
[2,] NA "3" "2" "it2" "it1" "it1" "it2" 1
[3,] "2" "3" "4" "it3" "it4" "it3" "it4" 2
[4,] NA NA NA "it4" "it3" "it3" "it4" 2
[5,] "5" NA NA "it5" "it6" "it5" "it6" 3
[6,] NA NA "2" "it6" "it5" "it5" "it6" 3
[7,] NA "4" NA "it7" "it9" "it7" "it9" NA
ฉันไม่แน่ใจว่าจะทำอย่างไร
สิ่งที่ฉันขอคือความช่วยเหลือในขั้นตอนที่ 2 หรืออาจจะมีวิธีที่ดีกว่าในการแก้ปัญหามากกว่าขั้นตอนที่ฉันระบุไว้