簡體   English   中英

R summaryBy或其他匯總方法

[英]R summaryBy or other summary method

我正在嘗試創建匯總表,並造成心理困擾。 本質上,我想我想要的是summaryBy語句,該語句獲取除要進行匯總的因素以外的所有列的子集的colSums。

我的數據框如下所示:

                   Cluster GO:0003677 GO:0003700 GO:0046872 GO:0008270 GO:0043565 GO:0005524
comp103680_c0      10          0          0          0          0          0          1
comp103947_c0       3          0          0          0          0          0          0
comp104660_c0       1          1          1          0          0          0          0
comp105255_c0       10          0          0          0          0          0          0

我想做的是使用Cluster作為分組因子,獲取Cluster之后所有列的colSums。

我已經嘗試了很多東西。 最后是一層

> groupColumns = "Cluster"
> dataColumns = colnames(GO_matrix_MF[,2:ncol(GO_matrix_MF)])
> res = ddply(GO_matrix_MF, groupColumns, function(x) colSums(GO_matrix_MF[dataColumns]))
> head(res)
  Cluster GO:0003677 GO:0003700 GO:0046872 GO:0008270 GO:0043565 GO:0005524 GO:0004674 GO:0045735
1       1        121        138        196         94         43        213         97         20
2       2        121        138        196         94         43        213         97         20

我不確定返回值代表什么,但它們不代表colSums

嘗試:

> aggregate(.~Cluster, data=ddf, sum)
  Cluster GO.0003677 GO.0003700 GO.0046872 GO.0008270 GO.0043565 GO.0005524
1       1          1          1          0          0          0          0
2       3          0          0          0          0          0          0
3      10          0          0          0          0          0          1

我認為您正在尋找類似的東西。 我修改了您的數據。 也有其他選擇。

# Modified data
foo <- structure(list(Cluster = c(10L, 3L, 1L, 10L), GO.0003677 = c(11L, 
0L, 1L, 5L), GO.0003700 = c(0L, 0L, 1L, 0L), GO.0046872 = c(0L, 
9L, 0L, 0L), GO.0008270 = c(0L, 0L, 0L, 0L), GO.0043565 = c(0L, 
0L, 0L, 0L), GO.0005524 = c(1L, 0L, 0L, 0L)), .Names = c("Cluster", 
"GO.0003677", "GO.0003700", "GO.0046872", "GO.0008270", "GO.0043565", 
"GO.0005524"), class = "data.frame", row.names = c("comp103680_c0", 
"comp103947_c0", "comp104660_c0", "comp105255_c0"))

library(dplyr)
foo %>%
    group_by(Cluster) %>%
    summarise_each(funs(sum))

# Cluster GO.0003677 GO.0003700 GO.0046872 GO.0008270 GO.0043565 GO.0005524
#1       1          1          1          0          0          0          0
#2       3          0          0          9          0          0          0
#3      10         16          0          0          0          0          1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM