【发布时间】:2016-04-17 07:30:13
【问题描述】:
当两个数据框按数字列合并时(默认情况下)它们按该列排序作为数字。但是,如果将两个数字列用作by,那么它会导致不同的排序(实际上,数字列似乎被转换为字符串并如此排序)。这是预期的还是错误?
例如,考虑以下两个数据框:
A <- data.frame(a = 1:12, b = 1, x = runif(12))
B <- data.frame(a = 1:12, b = 1, y = runif(12))
然后,merge(A, B, by = 'a') 会生成一个数据框,其中包含 a 列,其值为 1、2、...、9、10、11、12(即预期的数字顺序)。然而,merge(A, B, by = c('a', 'b')) 会生成一个数据框,其中的列 a 的值为 1、10、11、12、2、3、...、8、9(即,与 sort(as.character(1:12)) 的排序相同)。
【问题讨论】:
-
抑制合并
merge(A, B, by = c('a', 'b'), sort=F)中的排序功能