อาจจะเป็นเรื่องง่ายๆ
ฉันมี data.frame
ประเภทนี้:
df <- data.frame(sp1.name = c("sp1.n1",NA,"sp1.n3",NA), sp1.id = c("sp1.id1","sp1.id2",NA,NA),
sp2.name = c(NA,NA,"sp2.n3",NA), sp2.id = c(NA,NA,NA,"sp2.id4"),
sp3.name = c("sp3.n1",NA,NA,NA), sp3.id = c("sp3.id1",NA,NA,NA))
ประกอบด้วยคู่คอลัมน์สำหรับดัชนี 'sp' แต่ละรายการ: sp<index>.name
และ sp<index>.id
ในดัชนีตัวอย่างนี้คือ 1,2,3
ฉันกำลังมองหาวิธี (อาจถึง tidyverse
) เพื่อรวมสำหรับแต่ละ sp
คู่ของคอลัมน์ชื่อและรหัสที่เกี่ยวข้องซึ่งมีกฎสำหรับการรวมคือ:
if !is.na(sp<index>.name) & !is.na(sp<index>.id) return sp<index>.name
if !is.na(sp<index>.name) & is.na(sp<index>.id) return sp<index>.name
else if is.na(sp<index>.name) & !is.na(sp<index>.id) return sp<index>.id
else return NA
ดังนั้นสำหรับตัวอย่างนี้ ผลลัพธ์ data.frame
คือ:
df <- data.frame(sp1 = c("sp1.n1","sp1.id2","sp1.n3",NA),
sp2 = c(NA,NA,"sp2.n3","sp2.id4"),
sp3 = c("sp3.n1",NA,NA,NA))