将数据帧拆分为 R 中的列子集列表

生物群系

我有一个如下所示的数据框:

> set.seed(123)
> dat <- data.frame(samples = c("a.1","a.2","a.3","b.1","b.2","b.3"), ID = c(rep("A",3),rep("B",3))
> dat
  samples ID
1     a.1  A
2     a.2  A
3     a.3  A
4     b.1  B
5     b.2  B
6     b.3  B
> practice.data <- data.frame(a.1 = round(runif(5)), a.2=round(runif(5)),
  a.3=round(runif(5)),b.1=round(runif(5)),b.2=round(runif(5)),b.3=round(runif(5)))

> practice.data
  a.1 a.2 a.3 b.1 b.2 b.3
1   0   0   1   1   1   1
2   1   1   0   0   1   1
3   0   1   1   0   1   1
4   1   1   1   0   1   0
5   1   0   0   1   1   0

在上面的例子中,我想弄清楚如何将前三列从后三列变成一个单独的对象(即,用IDin分隔dat)。practice.data放入列表,我打算使用lapply函数来汇总行对于每个列表对象,返回针对每个ID的向量。

我已经用 for 循环尝试过这个,但它效率很低并且有太多问题,所以如果我能弄清楚如何去做,似乎使用列表和应用可能是最好的。

最终期望的输出是这样的:

A    B
1    3
2    2
2    2
3    1
1    2
西多姆
# map column names to the ID 
g <- dat$ID[match(names(practice.data), dat$samples)]
g

#[1] A A A B B B
#Levels: A B

# split the practice data into smaller data frames based on the map and call rowSums
as.data.frame(lapply(split.default(practice.data, g), rowSums))

#  A B
#1 1 3
#2 2 2
#3 2 2
#4 3 1
#5 1 2

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

R-将大型数据帧并行拆分为列表

在R中以定义的顺序将基于组的数据帧拆分为列表

R:将数据帧按组和行迭代拆分为列表

r通过迭代数字过滤器将数据帧拆分为列表

将列表列拆分为R数据帧上的多个整数列

R:如何根据单元格中的值将数据帧中的行拆分为多行?

将分隔的字符串拆分为R数据帧中的不同列

根据 R 中的索引将数据帧拆分为多个部分

如何将基于相等长度的数据帧列拆分为R中的单独行

根据R中的列名称将一个数据帧拆分为多个数据帧

R将数组拆分为数据帧

在 R 中,根据拆分字符串中的内容将 1 列数据帧转换/拆分为 4 列

在 R 中的数据框中的列子集上拟合模型

从基于列子集的列表中删除重复的 Pandas 数据帧

按行号将数据帧拆分为数据帧列表

将列表拆分为R中的单独数据框

如何将数据帧随机拆分为行,但每个群集在 R 中具有完全相同的值的总和

将数据帧中的每一列拆分为一个向量,然后写入目录R

将字符串拆分为2个字符的组合,并扩展为R中的数据帧

如何根据R中的条件将文本文件拆分为多个.txt文件或数据帧?

R中是否有一种方法可以将数据帧过滤并将其拆分为新的数据帧?

如何将数据帧拆分为等长列表

将数据帧中的表列拆分为单独的csv

根据列中的公共值将大数据帧拆分为数据帧列表

使用 lapply 将单个数据帧子集化为 R 中的数据帧列表

按列将 R 数据帧拆分为许多新的数据帧

R函数根据索引将数据帧拆分为多个数据帧

如何在R中按行对数据帧进行排序,然后将其拆分为多个数据帧?

数据子集:R中列表中的列表