Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- require(data.table);
- cat("K,N,S", "K1,1,A", "K2,2,B", "K3,3,C", file="f1.dat", sep="\n");
- cat("K,N,S", "K2,9,Z", "K3,,", file="f2.dat", sep="\n");
- dt1 <- data.table(read.table("f1.dat", sep=",", header=TRUE, stringsAsFactors=FALSE, na.strings=""), key=c("K"));
- dt2 <- data.table(read.table("f2.dat", sep=",", header=TRUE, stringsAsFactors=FALSE, na.strings=""), key=c("K"));
- tables();
- dt1;
- dt2;
- if (!identical(names(dt1), names(dt2)))
- stop("Assumed for now. Can relax later if needed.");
- w = chmatch(dt2$K, dt1$K);
- for (i in 2:ncol(dt2)) {
- nna = !is.na(dt2[[i]]);
- set(dt1,w[nna],i,dt2[[i]][nna]);
- }
- dt1 = rbind(dt1, dt2[is.na(w)]);
- dt1;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement