我想做两个数据帧的并集,它们共享具有相同rowName的某些行。对于那些具有通用rowName的行,我想考虑第二个数据框值,而不是第一个。例如:
Sub Fill_Rows()
Dim X As Range
Let Y = Range("C2")
For Each X In Range("B2:B5000")
If X = "" And Y <> "" Then
X = "Correct"
End If
Y = Y + 1
Next X
End Sub
那么我想要获得的结果将是:
df1 <- data.frame(col1 = c(1,2), col2 = c(2,4), row.names = c("row_1", "row_2"))
df1
# col1 col2
# row_1 1 2
# row_2 2 4
df2 <- data.frame(col1 = c(3,6), col2 = c(10,99), row.names = c("row_3", "row_2"))
df2
# col1 col2
# row_3 3 6
# row_2 10 99
函数rbind不能完成工作,实际上它会为通用行更新rowName。
答案 0 :(得分:3)
我将其概念化为仅将df2
中尚不存在的行添加到df1
中:
rbind(df2, df1[setdiff(rownames(df1), rownames(df2)), ])
答案 1 :(得分:2)
我们获得duplicated
个元素的索引,并将其用于filter
rbind(df2, df1)[!duplicated(c(row.names(df2), row.names(df1))),]