gpt4 book ai didi

r - 合并 data.frames 列表,列表元素名称作为合并数据框中的因素

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

我有一个 data.frame,如下所示,其中 location是一个因素并且sample是一些测量样本:

  location sample
1 'A' 0.10
2 'A' 0.20
3 'A' 0.15
4 'B' 0.15
5 'B' 0.99
6 'B' 0.54
...

我有一个函数 ECCDFpts(df) , 其中df是一个data.frame,返回一组<x,y>关于 df$sample 的经验 CCDF 的要点,像这样:

    x     y
1 0.0 1.00
2 0.1 0.99
3 0.2 0.75
...

请注意 <x,y> 的数量返点是“任意”的。在输入样本和输出样本之间存在一对一映射 <x,y>行。

我想在每个因素(例如,位置) 的基础上计算这个 CCDF 数据,产生这样的 data.frame:

  location    x    y
1 'A' 0.0 1.0
2 'A' 0.1 1.0
3 'A' 0.2 0.3
4 'B' 0.0 1.0
5 'B' 0.1 1.0
6 'B' 0.2 0.7
...

我目前的方法是根据因子 location 拆分初始数据框:

eccdfs_by_factor <- by(data, data$location, ECCDFpts)

这会产生一个 data.frames 列表:

data$location: A
x y
1 0.0 1.0
2 0.1 1.0
3 0.2 0.3
-----------------
data$location: B
x y
1 0.0 1.0
2 0.1 1.0
3 0.2 0.7

我不知道如何将其合并或拆分回我想要的形式,如前所示。我想合并,使列表中的元素名称 (data.frames) 成为合并后的 data.frame 中的列因子。

解决方案:

这显然是一个经典的拆分-应用-组合问题。最干净solutions below使用 plyr封装函数ddply(...)在一行中同时进行拆分、应用和组合!不需要基础 by我上面使用的功能。

最佳答案

更新:如果我正确理解你想要什么......

library(plyr)
ldply(your_data)

例如:

x <- list(a=data.frame(x=c(1,2,3,4),y=c(2,3,4,5)),
b=data.frame(x=c(4,3,2,1),y=c(5,4,3,2)))
ldply(x)

.id x y
1 a 1 2
2 a 2 3
3 a 3 4
4 a 4 5
5 b 4 5
6 b 3 4
7 b 2 3
8 b 1 2

关于r - 合并 data.frames 列表,列表元素名称作为合并数据框中的因素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6849064/

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