簡體   English   中英

使用另一個data.frame的列對data.frame進行排序

[英]Sort a data.frame with columns of another data.frame

我有以下data.frames:

d1 <- data.frame(A=c(-1,-1,1,1,-1,-1,1,1), B=c(-1,1,-1,1,-1,1,1,-1), Y=c(2,3,4,5,8,9,10,11))
d2 <- data.frame(A=c(1,1,-1,-1,1,-1,1,-1), B=c(-1,1,1,-1,-1,1,1,-1))

我想將列Y添加到d2 data.frame中。 我嘗試使用merge功能,但后來我復制了data.frame的行數。

我還嘗試使用函數ordermatch來按順序排列第一個data.frame:

d1[order(match(
  paste(d1$A,d1$B),
  paste(d2df$A,d2df$B))
),]

但它不起作用,我不知道為什么。

如果我理解正確,這將為您提供您所追求的結果:

# Sort d1 and d2 with columns A and B
d1 <- d1[order(d1$A,d1$B),]
d2 <- d2[order(d2$A,d2$B),]

# Copy Y from d1 to d2
d2$Y <- d1$Y

# Restore original order in d1 and d2
d1 <- d1[order(rownames(d1)),]
d2 <- d2[order(rownames(d2)),]

d2$Y
#[1]  4  5  3  2 11  9 10  8

如果d1d2具有不同的行數:

chosen <- numeric(length = nrow(d1))
choices <- paste(d1$A, d1$B)

for(i in seq(nrow(d1))){
  chosen[i] <- match(paste(d2$A[i], d2$B[i]), choices)
  choices[chosen] <- 0
  }

d2$Y <- d1[chosen, "Y"]
d2$Y
#[1]  4  5  3  2 11  9 10  8

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM