假设我有以下数据框:
df <- data.frame(A=c(0),
B=c(0),
C=c(0),
D=c(0),
E=c(0))
现在,我想在 df
中引入一些像这样的向量,在 df
中考虑但没有考虑的参数时引入 0
向量中的缺失。
Ex1 <- data.frame(B=c(1),
C=c(2),
D=c(4))
Ex2 <- data.frame(A=c(1),
E=c(6))
也就是说,结果应该是这样的:
A B C D E
0 0 0 0 0
0 1 2 4 0
1 0 0 0 6
最佳答案
我们可以使用 dplyr
中的 bind_rows
,它会在丢失时自动填充 NA
,然后替换 NA
到 0 以后
library(dplyr)
library(tidyr)
bind_rows(df, Ex1, Ex2) %>%
mutate(across(everything(), replace_na, 0))
-输出
A B C D E
1 0 0 0 0 0
2 0 1 2 4 0
3 1 0 0 0 6
我们也可以在 base R
中使用行/列索引来执行此操作,即创建一个 0 值的 matrix
,然后用行索引和列名填充每一行来自“Ex1”、“Ex2”数据
m1 <- matrix(0, nrow = 3, ncol = 5, dimnames = list(NULL, LETTERS[1:5]))
m1[2, names(Ex1)] <- as.matrix(Ex1)
m1[3, names(Ex2)] <- as.matrix(Ex2)
m1
A B C D E
[1,] 0 0 0 0 0
[2,] 0 1 2 4 0
[3,] 1 0 0 0 6
关于r - 按标准在数据框中引入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69228491/