2013-02-27 16 views
0

我想知道是否有可能基於缺少另一個表中的某個值添加額外的行到表中。這是我的情況怎麼看起來像兩列基於缺席從其他列表中添加一個額外的行

文本文件

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.可能有人給我個忙嗎?

回答

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 
相關問題