【发布时间】:2021-08-04 07:10:25
【问题描述】:
我有一个包含两列(id 和 info)的巨大数据表,我想将 info 列分隔/拆分为单列并格式化它们。
这是一个示例,我的数据表的条目如下所示:
id <- c(8750, 3048, 3593, 8475, 9921)
info <- c("[J/B][10,00/10,00][1,500/1,500][1,00]", "[J*/POP][0,00/0,00/0,00/0,00][2,210/2,210/2,210/2,210][1,50]", "S", "KEINE",
"[Q*/B][5,00/5,00][1,500/1,500][0,70]")
dt.test <- data.table(id, info)
dt.test
# id info
# 8750 [J/B][10,00/10,00][1,500/1,500][1,00]
# 3048 [J*/POP][0,00/0,00/0,00/0,00][2,210/2,210/2,210/2,210][1,50]
# 3593 S
# 8475 KEINE
# 9921 [Q*/B][5,00/5,00][1,500/1,500][0,70]
最后我需要一个表,其中info 列分为六个单列(id、type、pBu、pBo、zTBu、zTBo 和 @987654332 @) 并将它们格式化如下:
# id type pBu pBo zTBu zTBo zV
# 8750 J/B 10 10 1.50 1.50 1.0
# 3048 J*/POP 0 0 2.21 2.21 1.5
# 3593 S NA NA NA NA NA
# 8475 KEINE NA NA NA NA NA
# 9921 Q*/B 5 5 1.50 1.50 0.7
只是对我在开头的info 列以及最终数据表的外观进行一点解释:
-
info列中的所有逗号,必须替换为点.(请参阅我的最终数据表)。 - 第一个括号
[]的输入定义了我的新type列,此外,如果info列填充“S”或“KEINE”,这也必须是@ 的条目987654341@专栏。 - 第二个括号
[]的输入定义了新列pBu(第一个元素)和pBo(最后一个元素)。 - 第三个括号
[]的输入定义了新列zTBu(第一个元素)和zTBo(最后一个元素)。 - 第四个括号
[]的输入定义了zV列。 - 当
type列有条目“S”或“KEINE”时,其余列必须用NAs 填充。
【问题讨论】:
标签: r split datatable formatting