使用R,我想基于另一个文件替换一个文件的内容。这个例子可以让我更容易看到我想要做的事情:
File1中:
[,1] [,2] [,3]
1 5 3 4
2 6 3 0
3 7 6 5
4 9 7 4
文件2
[,1] [,2]
[1,] 1 3
[2,] 2 4
[3,] 3 5
[4,] 4 6
[5,] 5 7
[6,] 6 9
我想用file2中第1列的匹配替换file1中的数字。例如,file1中的5将被3 nad 7 by 5等替换。输出文件将是:
[,1] [,2] [,3]
1 3 1 2
2 4 1 0
3 5 4 3
4 6 5 2
答案 0 :(得分:3)
这让你大部分时间都可以。它假设您事先知道file1
有3列 - 如果不是,您可以使用ncol = ncol(file1)
。
file3 <- matrix(match(file1, file2[, 2]), ncol = 3)
file3
[,1] [,2] [,3]
[1,] 3 1 2
[2,] 4 1 NA
[3,] 5 4 3
[4,] 6 5 2
生成NA,因为不匹配0.您可以替换它。
file3[is.na(file3)] <- 0
答案 1 :(得分:1)
通过创建查找向量并使用match
,可以选择以下选项。 file3
是最终输出。
look_up <- file2[, 2]
names(look_up) <- file2[, 1]
value <- match(file1, look_up)
value[is.na(value)] <- 0
file3 <- matrix(value, ncol = 3)
file3
# [,1] [,2] [,3]
# [1,] 3 1 2
# [2,] 4 1 0
# [3,] 5 4 3
# [4,] 6 5 2
数据强>
file1 <- matrix(c(5, 3, 4, 6, 3, 0, 7, 6, 5, 9, 7, 4), ncol = 3, byrow = TRUE)
file2 <- matrix(c(1:6, 3:7, 9), ncol = 2)