gpt4 book ai didi

r - 按两个因素拆分数据框

转载 作者:行者123 更新时间:2023-12-04 23:38:31 26 4
gpt4 key购买 nike

我有一个看起来像这样的数据框( sampdata ):

A B  C   D
1 X 5 0.3
2 Y 10 0.9
3 Y 7 0.2
4 Y 5 0.4
5 X 10 0.7

基本上,我想基于 B 列和 C 列创建两个新数据框。在之前的帖子中,我已经看到如何根据我所做的一个因素使用“拆分”对数据进行子集化
test <- split(sampdata, sampdata$B)
str(test)

到现在为止还挺好。但是,当我尝试添加第二个拆分时:
testBC <- split(test, test$C)

我收到一条错误消息:

Error in split.default(test, test$Product) : group length is 0 but data length > 0



我也试过:
testBC <- split(test$B, test$C)

但收到另一条错误消息。所以,然后我尝试了第二种方法,基于 ddplyplyr包裹:
test2 <- ddply(sampdata, c("B", "C"))

这确实按行组织数据,以便:
A B  C   D
1 X 5 0.3
5 X 10 0.7
2 Y 10 0.9
3 Y 7 0.2
4 Y 5 0.4

但是,其他线程仅显示如何基于一个列( test2$B )而不是两者来访问特定数据帧。我宁愿简单地基于 B 和 C 的子集生成一个新的数据框,这样:
newdf1
A B C D
1 X 5 .3
5 X 10 .9

newdf2
A B C D
2 Y 7 .2
3 Y 5 .4
4 Y 10 .7

在尝试了几种方法之后,可能是直接/简单的任务出奇地困难(至少对我而言)。

任何帮助最受赞赏。

最佳答案

如果我们需要按多列拆分,请将其放在 list

split(df1, list(df1$B, df1$C), drop = TRUE)
#$X.5
# A B C D
#1 1 X 5 0.3

#$Y.5
# A B C D
#4 4 Y 5 0.4

#$Y.7
# A B C D
#3 3 Y 7 0.2

#$X.10
# A B C D
#5 5 X 10 0.7

#$Y.10
# A B C D
#2 2 Y 10 0.9

关于r - 按两个因素拆分数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46616791/

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