2017-04-15 40 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