根据列值从列表中选择数据框

用户名

这个问题是从先前的另一个问题改编而来的。

我使用R,仅在其中一列中存在特定值组合时,才尝试通过从现有列表中选择数据框来创建数据框的新列表。让我解释一下可以正常工作的第一步。这是我在名为df的数据框中的原始数据:

                              Taxon      C     N    func.group  trophic.grp
1  Chrysomelidae.Phylotreta.exclamationis -30.23  5.06     grazer   herbivore
2        Chrysomelidae.Neocrepidodera.sp. -27.29  5.55     grazer   herbivore
3        Chrysomelidae.Neocrepidodera.sp. -27.84  5.54     grazer   herbivore
4        Chrysomelidae.Neocrepidodera.sp. -27.69  4.59     grazer   herbivore
5              Mitidulidae.Meligethes.sp. -26.99  5.30     grazer   herbivore
6           Chrysomelidae.Phylotreta.sp.2 -28.50  2.40     grazer   herbivore
7           Chrysomelidae.Phylotreta.sp.2 -28.36  4.17     grazer   herbivore
8           Chrysomelidae.Phylotreta.sp.2 -29.50  3.15     grazer   herbivore
9           Chrysomelidae.Phylotreta.sp.2 -27.69  3.72     grazer   herbivore
10          Chrysomelidae.Phylotreta.sp.2 -28.22  3.26     grazer   herbivore
11                  Gastropoda.snail.sp.1 -26.21  3.54     grazer   herbivore
12                  Gastropoda.snail.sp.1 -27.59  2.61     grazer   herbivore
13                  Gastropoda.snail.sp.1 -25.10  2.66     grazer   herbivore
14                  Gastropoda.snail.sp.2 -26.49  2.55     grazer   herbivore
15                  Gastropoda.snail.sp.4 -27.46 -0.38     grazer   herbivore
16       Lepidoptera.Arctidae.Ermine.moth -28.51  2.44     grazer   herbivore
17       Curculionidae.Ischapterapion.sp. -29.06  2.19     weevil   herbivore
18       Curculionidae.Ischapterapion.sp. -29.27  1.60     weevil   herbivore
19       Curculionidae.Ischapterapion.sp. -29.94  2.08     weevil   herbivore
20       Curculionidae.Ischapterapion.sp. -29.71  2.16     weevil   herbivore
21            Curculionidae.Protapion.sp. -28.45  1.91     weevil   herbivore
22            Curculionidae.Protapion.sp. -25.99  0.55     weevil   herbivore
23            Curculionidae.Protapion.sp. -28.27  1.52     weevil   herbivore
24            Curculionidae.Protapion.sp. -28.01  1.74     weevil   herbivore
25            Curculionidae.Protapion.sp. -27.06  0.54     weevil   herbivore
26             Curculionidae.Hypera.meles -25.41  3.38     weevil   herbivore
27               Curculionidae.Sitona.sp. -27.05  2.01     weevil   herbivore
28               Curculionidae.Sitona.sp. -26.70  3.07     weevil   herbivore
29               Curculionidae.Sitona.sp. -27.64  2.13     weevil   herbivore
30               Curculionidae.Sitona.sp. -27.50  1.47     weevil   herbivore
31            Curculionidae.Phylobius.sp. -28.27  2.66     weevil   herbivore
32      Curculionidae.Hypera.nigrorostris -25.52  2.43     weevil   herbivore

该数据帧(df)包含14个不同的“ Taxon”,其中一些具有多个样本,因此总共有32个样本。每个分类单元也通过“ func.group”列分类为“放牧者”或“象鼻虫”。

首先,我想从14中随机选择6个分类单元,以实现6个所有可能的组合。因此,可以从14个中选择3003个6个分类单元的组合(随机取样而不进行替换,顺序并不重要)。对于每个选定的分类单元,我要包括该分类单元的所有样本。我使用此代码,效果很好:

combos<-combn(unique(as.character(df$Taxon)), 6) 

接下来,我还想包括所有其他信息列,因此我使用了这行额外的代码行,该代码行为所选的每个Taxon添加了其他数据列,并且效果很好:

mysamples <- apply(combos, 2, function(vec) df[ df$Taxon %in% vec, ] )

这样我们就解决了我的问题。从“ mysamples”(现在应该是3003个数据框的列表)中,我要选择在3个Taxon中包含“ grazer”和在3个Taxon中包含“ weevil”的所有数据框,并将这些数据框存储在新清单。

因此,我希望这个新列表仅包含平衡为3:3 weevil:grazer Taxon的数据框,

非常感谢,M

乔斯利伯

我认为您正在寻找的mysamples的所有元素都恰好有3象鼻虫和正好3放牧者。您可以执行以下操作:

# Get list of bool for whether to include
include.list <- lapply(mysamples, function(x) sum(x$func.group == "weevil") == 3 &
                                              sum(x$func.group == "grazer") == 3)

# Limit mysamples to the selected ones
mysamples <- mysamples[do.call(c, include.list)]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

根据最大列值从列表中选择数据框

来自分类Dev

根据R中的动态值从数据框中选择列

来自分类Dev

根据R中的动态值从数据框中选择列

来自分类Dev

根据其他数据框从数据框中选择值

来自分类Dev

从R数据框列中选择值

来自分类Dev

根据另一列中的值从数据框中的列中选择

来自分类Dev

根据列条件从熊猫数据框中选择列

来自分类Dev

根据列值选择数据框的行

来自分类Dev

根据重复的值从分组的数据框中选择行

来自分类Dev

根据列表值过滤数据框列

来自分类Dev

根据非空列数从数据框中选择行

来自分类Dev

根据行条件从熊猫数据框中选择列

来自分类Dev

从数据框中选择行,其中列值是字符串列表

来自分类Dev

如何从熊猫数据框中选择的列表中检查值?

来自分类Dev

根据列表或另一列中的值在Pandas数据框中动态选择列

来自分类Dev

打包列表以从Spark数据框中选择多个列

来自分类Dev

从数据框中选择列列表以转换为子集

来自分类Dev

在列表中嵌入的数据框中选择特定的列

来自分类Dev

根据其他数据框中具有最小值/最大值的列从pandas数据框中选择值

来自分类Dev

从数据框中选择每行的前N个列值

来自分类Dev

在数据框中选择与列值部分匹配的行

来自分类Dev

在数据框中选择性地添加列的值

来自分类Dev

从数据框中的列中选择特定值

来自分类Dev

在数据框中选择数组作为列值

来自分类Dev

根据pandas数据框中的多个列值选择行

来自分类Dev

根据数据框中的列选择最新值

来自分类Dev

根据索引列表更改数据框列的值

来自分类Dev

根据列值在列表中删除数据框

来自分类Dev

根据列表值对数据框列求和

Related 相关文章

热门标签

归档