gpt4 book ai didi

r - 使用 data.table 扩展数据

转载 作者:行者123 更新时间:2023-12-02 06:47:17 25 4
gpt4 key购买 nike

我有这个数据表

library(data.table)

data.table(
id = c(rep(1, 3), rep(2, 2)),
begin = c(1, 4, 8, 1, 11),
end = c(3, 7, 12, 10, 12),
state = c("A", "B", "A", "B", "A")
)

我想要这样的输出:

data.table(
id = c(1, 2),
m1 = c("A", "B"),
m2 = c("A", "B"),
m3 = c("A", "B"),
m4 = c("B", "B"),
m5 = c("B", "B"),
m6 = c("B", "B"),
m7 = c("B", "B"),
m8 = c("A", "B"),
m9 = c("A", "B"),
m10 = c("A", "B"),
m11 = c("A", "A"),
m12 = c("A", "A")
)

那些曾经做过序列分析的人可能已经认识到我正在尝试做 TRAMiNeR 包中的 seqformat 所做的事情,但是由于使用data.table

最佳答案

data.table 的一个选项是在创建序列列后融化 数据集,然后按 'i1'、'id'、'state'、获取 firstlast 'value' 的 sequence,dcast 从 'long' 到 'wide'

dt1 <- melt(dt[, i1 := seq_len(.N)], id.vars = c("i1", "id", "state"))[,
paste0("m", seq(first(value), last(value))), .(i1, id, state)]
dcast(dt1, id ~ V1, value.var = "state")[]
# id m1 m10 m11 m12 m2 m3 m4 m5 m6 m7 m8 m9
#1: 1 A A A A A A B B B B A A
#2: 2 B B A A B B B B B B B B

关于r - 使用 data.table 扩展数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55421836/

25 4 0