【发布时间】:2018-12-08 22:41:44
【问题描述】:
我有一个非常大的 data.table,其中(大量)项目由字符串定义,包括文本和数字。
library(data.table)
dd <- data.table(x = c("A4","A4","A4","A14","A14","A14","B4","B4","B4"),y = c("A4","A14","B4","A4","A14","B4","A4","A14","B4"), z = c(1,2,3,4,5,6,7,8,9))
x y z
A4 A4 1
A4 A14 2
A4 B4 3
A14 A4 4
A14 A14 5
A14 B4 6
B4 A4 7
B4 A14 8
B4 B4 9
数字可以是一位数或两位数,因此 R 将始终根据数字中的第一个数字(A14 在 A4 之前)对它们进行排序。混合排序可以处理这个问题。但是,当我将长数据重塑为宽时
wide <- dcast(dd, x ~ y, value.var = "z")
R 正在根据基本排序规则再次应用排序。
x A14 A4 B4
A14 5 4 6
A4 2 1 3
B4 8 7 9
但是,我需要以下矩阵计算的原始顺序。有没有任何有效的方法可以将字符串 + 个位数重命名为字符串 + 双位数(A4 -> A04)或我错过的另一种方法?
【问题讨论】:
标签: r string data.table data-management