gpt4 book ai didi

r - 将数据框列表转换为数据表

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

我有一个数据框列表,例如:

listOfDataFrames <- vector("list", 10)

for (i in 1:10) {
listOfDataFrames[[i]] <- data.frame(a=rnorm(50), b=rnorm(50))
}

我想制作一个包含 3 列 (a,b,c) 的单个数据表,其中 a 和 b 是上面数据框的列,c 是 listOfDataframes 中数据框的索引。

最佳答案

我会做类似下面的事情:

library(data.table)
Lens <- vapply(listOfDataframes, nrow, 1L)
rbindlist(listOfDataframes)[, c := rep(seq_along(Lens), times = Lens)][]
# a b c
# 1: -1.6462894 1.0232899 1
# 2: -0.5145108 -0.2134384 1
# 3: -0.1171853 2.5456709 1
# 4: 0.2735289 1.1948928 1
# 5: 0.5739892 0.3939964 1
# ---
# 496: 0.9539835 -1.4100199 10
# 497: -0.8697604 0.6793800 10
# 498: 0.8601795 -0.3015890 10
# 499: 0.8306091 -2.2269960 10
# 500: -1.3407596 0.5014448 10

基本上,“Lens”只是算出每个列表项中有多少行(在本例中,每个 50 行),然后您只需使用 rep 来计算列的值“C”。由于 rbindlist 的结果是一个 data.table,您可以只使用 := 在复合语句中分配 "c"的值.


使用 development version,您现在可以用新的 idcol 参数替换 vapply 部分。 idcol 始终是字符 类型。

rbindlist(listOfDataframes, idcol = "c")

关于r - 将数据框列表转换为数据表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28135192/

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