gpt4 book ai didi

r - 折叠 data.table 中的行

转载 作者:行者123 更新时间:2023-12-04 15:11:09 25 4
gpt4 key购买 nike

我有一个包含 100 万行和 2 列的 data.table

虚拟数据:

require(data.table)
ID <- c(1,2,3)
variable <- c("a,b","a,c","c,d")
dt <- data.table(ID,variable)
dt
> dt
ID variable1      a,b2      a,c3      c,d

Now I want to collapse the column "variable" into different rows by "ID", just as the "melt" function in reshape2 or melt.data.table in data.table

Here's what I want:

ID variable1  a1  b2  a2  c3  c3  d 

PS:Given the desired results, I know how to do the reverse step.

dt2 <- data.table(ID = c(1,1,2,2,3,3), variable = c("a","b","a","c","c","d"))
dt3 <- dt2[, list(variables = paste(variable, collapse = ",")), by = ID]

任何提示或建议?

最佳答案

strsplit是矢量化的,这将是这里的耗时操作,我会避免在每个组上使用它。相反,可以先在 , 上拆分在整个列上,然后重建 data.table如下:

var = strsplit(dt$variable, ",", fixed=TRUE)
len = vapply(var, length, 0L)
ans = data.table(ID=rep(dt$ID, len), variable=unlist(var))

# ID variable
# 1: 1 a
# 2: 1 b
# 3: 2 a
# 4: 2 c
# 5: 3 c
# 6: 3 d

关于r - 折叠 data.table 中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24037122/

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