sách gpt4 ai đã đi

r - 统一使用字符串中的单双位数

In lại 作者:行者123 更新时间:2023-12-04 12:05:23 25 4
mua khóa gpt4 Nike

我有一个非常大的 data.table,其中(大量)项目由字符串定义,包括文本和数字。

thư viện(dữ liệu.bảng)    
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 将始终根据数字中的第一个数字(A4 之前的 A14)对它们进行排序。 Mixedsort 可以解决这个问题。但是,当我将长数据 reshape 为宽时
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)或我错过的另一种方法?

1 Câu trả lời

另一个可能是最简单的选项是使用 mixedorderTừ gtools -包裹:

wide <- dcast(dd, x ~ y, value.var = "z")[gtools::mixedorder(x)]

这使:

> wide
x A14 A4 B4
1: A4 2 1 3
2: A14 5 4 6
3: B4 8 7 9


如果您还想以相同的方式设置列顺序,您可以另外使用 setcolorder :
setcolorder(wide, c(1, gtools::mixedorder(names(wide)[-1]) + 1))

然后给出:

> wide
x A4 A14 B4
1: A4 1 2 3
2: A14 4 5 6
3: B4 7 8 9

关于r - 统一使用字符串中的单双位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51106764/

25 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com