gpt4 book ai didi

r - 如何将数据框拆分为给定列名的数据框列表?

转载 作者:行者123 更新时间:2023-12-01 09:27:55 25 4
gpt4 key购买 nike

我想构建一个函数,例如 splitdf(columnA + columnB ~ ., dataframe)

这样它就会为每对可能的columnA 和columnB 返回一个子数据帧列表。它类似于 tablextabs

所以,对于

> a <- data.frame(x=1:3, y=1:3, z=1:9)
> a
x y z
1 1 1 1
2 2 2 2
3 3 3 3
4 1 1 4
5 2 2 5
6 3 3 6
7 1 1 7
8 2 2 8
9 3 3 9

我期待:

x = 1, y = 1, 
x y z
1 1 1
1 1 4
1 1 7

x = 2, y = 2,
x y z
2 2 2
2 2 5
2 2 8

x = 3, y = 3,
x y z
3 3 3
3 3 6
3 3 9

更新

我意识到 splitdlply 可以工作。但是它们都没有为我提供操纵类别名称的好方法?如何使这些名称有意义?就像我想看到 x = 1, y = 1 而不是 $1.1

最佳答案

这是你想要的吗?

> library (plyr)
> dlply(a, .(x, y))
$`1.1`
x y z
1 1 1 1
2 1 1 4
3 1 1 7

$`2.2`
x y z
1 2 2 2
2 2 2 5
3 2 2 8

$`3.3`
x y z
1 3 3 3
2 3 3 6
3 3 3 9

更新

> z <- dlply(a, .(x, y))
> names(z) <- dlply(a, .(x, y), function(x) sprintf("x = %d, y = %d", x$x[1], x$y[1]))
> z
$`x = 1, y = 1`
x y z
1 1 1 1
2 1 1 4
3 1 1 7

$`x = 2, y = 2`
x y z
1 2 2 2
2 2 2 5
3 2 2 8

$`x = 3, y = 3`
x y z
1 3 3 3
2 3 3 6
3 3 3 9

关于r - 如何将数据框拆分为给定列名的数据框列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19927932/

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