0

我想知道是否可以根据另一个表中缺少某个值来向表中添加额外的行。这就是我的情况

包含 2 列的文本文件

V1 V2
1  100
1  101
1  102
1  103
2  230
2  231
2  232
... ...

其他 5 列的文本文件

V1 V2 V3 V4 V5
1  100 a b c
1  101 a b c
1  103 a b c
2  231 a b c
2  232 a b c

当第一个文本文件的 V1 和 V2 的值组合不存在于第二个文本文件中时(在示例中 1 102 和 2 230 不存在),我想在第二个文件中添加值为 V1 的额外行和来自第一个文件的 V2 & V3、V4 和 V5 等于 0

这样第二个文件就变成了这样:

V1 V2 V3 V4 V5
1  100 a b c
1  101 a b c
1  102 0 0 0
1  103 a b c
2  230 0 0 0
2  231 a b c
2  232 a b c

我在 R 中找不到执行此操作的正确命令。有人可以帮帮我吗?

4

1 回答 1

2

假设这两个对象分别命名为“DF1”和“DF2”,可以merge如下使用:

DFM <- merge(DF1, DF2, all = TRUE)
DFM
#   V1  V2   V3   V4   V5
# 1  1 100    a    b    c
# 2  1 101    a    b    c
# 3  1 102 <NA> <NA> <NA>
# 4  1 103    a    b    c
# 5  2 230 <NA> <NA> <NA>
# 6  2 231    a    b    c
# 7  2 232    a    b    c

如果您真的更喜欢0而不是NA,您可以执行以下操作:

# Convert the factors to characters
DFM[sapply(DFM, is.factor)] <- lapply(DFM[sapply(DFM, is.factor)], as.character)
# Identify the NA values and replace them with 0
DFM[is.na(DFM)] <- 0
DFM
#   V1  V2 V3 V4 V5
# 1  1 100  a  b  c
# 2  1 101  a  b  c
# 3  1 102  0  0  0
# 4  1 103  a  b  c
# 5  2 230  0  0  0
# 6  2 231  a  b  c
# 7  2 232  a  b  c
于 2013-02-27T09:43:52.837 回答