gpt4 book ai didi

r - 未拆分列表,合并因子

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

我在 R 中有以下数据框:

  c1 c2  
1 10 a
2 20 a
3 30 b
4 40 b

然后我 split如下: z = lapply(split(test$c1, test$c2), function(x) {cut(x,2)})
. z然后是:
$a  
[1] (9.99,15] (15,20]
Levels: (9.99,15] (15,20]

$b
[1] (30,35] (35,40]
Levels: (30,35] (35,40]

然后我想通过拆分列表来合并这些因素 unsplit(z, test$c2) .这会产生一个警告:
[1] (9.99,15] (15,20]   <NA>      <NA>     
Levels: (9.99,15] (15,20]
Warning message:
In `[<-.factor`(`*tmp*`, i, value = 1:2) :
invalid factor level, NAs generated

我想对所有因子水平进行联合,然后取消拆分,以免发生此错误:
z$a = factor(z$a, levels=c(levels(z$a), levels(z$b)))
unsplit(z, test$c2)
[1] (9.99,15] (15,20] (30,35] (35,40]
Levels: (9.99,15] (15,20] (30,35] (35,40]

在我的真实数据框中,我有一个非常大的列表,因此我需要遍历所有列表元素(不仅仅是两个)。做这个的最好方式是什么?

最佳答案

如果我正确理解了您的问题,我认为您使这比需要的要复杂一些。这是使用 plyr 的一种解决方案.我们将按 c2 分组多变的:

require(plyr)
ddply(test, "c2", transform, newvar = cut(c1, 2))

返回:
  c1 c2    newvar
1 10 a (9.99,15]
2 20 a (15,20]
3 30 b (30,35]
4 40 b (35,40]

并具有以下结构:
'data.frame':   4 obs. of  3 variables:
$ c1 : num 10 20 30 40
$ c2 : Factor w/ 2 levels "a","b": 1 1 2 2
$ newvar: Factor w/ 4 levels "(9.99,15]","(15,20]",..: 1 2 3 4

关于r - 未拆分列表,合并因子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5836042/

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