gpt4 book ai didi

r - 使用模式的熔化和类型转换数据表

转载 作者:行者123 更新时间:2023-12-04 12:05:57 27 4
gpt4 key购买 nike

data.table软件包为 melt 添加了一项新功能数据同时进入多列。这非常有用,但我不知道如何保留预熔变量名称的“后缀”。例如:

library(data.table)

# create data table
dt <- data.table(id = seq(3), a_3 = seq(3), a_4 = seq(4, 6), b_3 = seq(7, 9), b_4 = seq(10, 12))

# melt and cast in one step using new feature
m1 <- melt(dt, id.vars='id', measure=patterns("a_", "b_"), value.name=c("a_", "b_"))

数据表中的结果:
   id variable a_ b_
1: 1 1 1 7
2: 2 1 2 8
3: 3 1 3 9
4: 1 2 4 10
5: 2 2 5 11
6: 3 2 6 12

这是我想要的“形状”,但变量 a_3 , a_4 , b_3b_4已被索引 12 .我要的是 variable要包含的列 3,3,3,4,4,4 , 根据变量名的后缀。

我显然可以用 melt 以“老式”方式做到这一点。 , strsplit , dcast ,但这有点麻烦。我希望有一个仍然非常快的单线解决方案。

最佳答案

我们可以通过 splitstackshape 做到这一点.它自动给出“.time_1”列

library(splitstackshape)
merged.stack(dt, var.stubs=c("a", "b"), sep="_")
# id .time_1 a b
#1: 1 3 1 7
#2: 1 4 4 10
#3: 2 3 2 8
#4: 2 4 5 11
#5: 3 3 3 9
#6: 3 4 6 12

关于r - 使用模式的熔化和类型转换数据表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35048201/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com