2017-04-15 86 views
1

我刚刚开始使用R,并且在处理我的原始数据时遇到了障碍。所以这是问题。我有两个数据集A和B具有相同的行数(公司名称)和列(月)。但显然我必须匹配数据位置的模式(例如,如果A的(i,j)是空白的,那么我需要擦除(i,j)的数据B中的条目,我需要有相同的数字细胞,并在两个数据集的数据分配的模式相同的。我已经试过这双循环,但它不能正常工作。使用R进行数据模式匹配

for (i in 1:length.firm) 
      for (j in 1:time.) 
        if (CR [i,j] == ",") marketreturnmonthly[i,j] == "," 

谁能告诉我怎么解决这个问题?enter image description here

+0

也许'merge'会更好吗? –

+1

欢迎来到SO!请使用'dput()'来显示你的数据。请编辑您的问题:http://stackoverflow.com/posts/43424603/edit – jogo

回答

1

这解决方案使用“data.table”包:

A <- data.table(symbol = c("1990.01","1990.02","1990.03"), A1 = c(4,NA,NA), A2 = c(6,7,NA), A3 = c(NA, 8, NA)) 
B <- data.table(symbol = c("1990.01","1990.02","1990.03"), A1 = c(1,4,7), A2 = c(2,5,8), A3 = c(3, 6, 9)) 
vec <- ifelse(as.vector(is.na(A)), NA, unlist(B)) 
C <- data.table(matrix(vec, 3)) 
colnames(C) <- c("Symbol", "A1", "A2", "A3") 
C 
    Symbol A1 A2 A3 
1: 1990.01 1 2 NA 
2: 1990.02 NA 5 6 
3: 1990.03 NA NA NA