2 基于因素的计数 table 对 r 中的独立列使用 dplyer
2 factor based count table using dplyer for independent columns in r
我有如下数据框:
structure(list(group = c("K4", "K4", "K1", "K1", "K4", "K4",
"K1", "K4", "K5", "K4", "K4", "K5", "K4", "K3", "K3", "K4", "K4",
"K4", "K4", "K3", "K3", "K5", "K3", "K5", "K3", "K5", "K3", "K3",
"K1", "K4", "K5", "K4", "K2", "K4", "K2", "K5", "K1", "K1", "K1",
"K1", "K1", "K1", "K3", "K4", "K3", "K3", "K3", "K1", "K1", "K5",
"K5", "K1", "K1", "K1", "K1", "K1", "K1", "K5", "K1", "K3", "K4",
"K3", "K2", "K4", "K4", "K4", "K3", "K2", "K4", "K3", "K4", "K3",
"K2", "K5", "K4", "K3", "K4", "K5", "K5", "K4", "K4", "K4", "K4",
"K1", "K2", "K4", "K4", "K5", "K3", "K3", "K5", "K5", "K4", "K4",
"K4", "K4", "K3", "K1", "K3", "K5", "K3", "K3", "K3", "K4", "K1",
"K1", "K2", "K5", "K5", "K5", "K3", "K5", "K4", "K5", "K5", "K4",
"K2", "K5", "K2", "K4", "K4", "K4", "K4", "K4", "K4", "K3", "K4",
"K1", "K2", "K4", "K1", "K4", "K4", "K4", "K1", "K1", "K5", "K5",
"K1", "K5", "K5", "K5", "K4", "K3", "K3", "K5", "K4", "K4", "K3",
"K2", "K3", "K4", "K3", "K3", "K3", "K3", "K3", "K3", "K5", "K4",
"K5", "K5", "K4", "K5", "K1", "K5", "K1", "K1", "K5", "K5", "K5",
"K1", "K4", "K5", "K1", "K3", "K5", "K4", "K5", "K2", "K2", "K4",
"K1", "K2", "K3", "K4", "K4", "K2", "K4", "K4", "K2", "K4", "K5",
"K5", "K3", "K2", "K4", "K4", "K1", "K1", "K1", "K1", "K4", "K3",
"K3", "K4", "K5", "K5", "K4", "K5", "K4", "K3", "K4", "K5", "K3",
"K4", "K1", "K3", "K3", "K4", "K3", "K4", "K3", "K1", "K5", "K5",
"K1", "K1", "K5", "K5", "K1", "K1", "K1", "K1", "K5", "K4", "K4",
"K3", "K3", "K3", "K3", "K3", "K3", "K4", "K4", "K5", "K1", "K4",
"K5", "K5", "K4", "K4", "K5", "K4", "K5", "K5", "K4", "K4", "K5",
"K4", "K5", "K5", "K5", "K5", "K5", "K2", "K1", "K5", "K1", "K4",
"K4", "K1", "K1", "K1", "K1", "K1", "K1", "K1", "K1", "K1"),
gene1 = c("MT", "MT", "WT", "WT", "MT", "MT", "MT", "MT",
"WT", "MT", "MT", "WT", "MT", "MT", "MT", "MT", "MT", "MT",
"MT", "MT", "MT", "WT", "MT", "MT", "MT", "WT", "MT", "MT",
"MT", "MT", "WT", "WT", "MT", "MT", "MT", "WT", "MT", "MT",
"MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT",
"MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT", "WT",
"MT", "WT", "MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT",
"MT", "MT", "MT", "MT", "MT", "MT", "WT", "WT", "MT", "WT",
"WT", "MT", "MT", "MT", "MT", "WT", "MT", "MT", "MT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "MT", "MT", "MT",
"WT", "MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT",
"MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT",
"WT", "MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT",
"MT", "MT", "MT", "WT", "MT", "MT", "MT", "MT", "WT", "WT",
"MT", "MT", "MT", "WT", "MT", "MT", "MT", "MT", "MT", "MT",
"WT", "MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT",
"WT", "MT", "WT", "MT", "WT", "MT", "MT", "WT", "MT", "WT",
"MT", "WT", "WT", "WT", "MT", "MT", "WT", "MT", "WT", "WT",
"WT", "WT", "WT", "MT", "MT", "MT", "MT", "MT", "MT", "MT",
"MT", "MT", "MT", "MT", "WT", "MT", "WT", "MT", "MT", "MT",
"MT", "MT", "MT", "WT", "MT", "WT", "MT", "MT", "WT", "WT",
"MT", "WT", "MT", "WT", "MT", "WT", "MT", "MT", "MT", "MT",
"MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT", "WT",
"MT", "WT", "MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT",
"MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT",
"MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT",
"WT", "MT", "MT", "MT", "MT", "MT", "MT", "MT", "WT", "WT",
"MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT",
"MT", "MT"), gene2 = c("WT", "WT", "MT", "MT", "MT", "MT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "MT", "WT", "WT", "WT",
"MT", "WT", "MT", "WT", "WT", "MT", "WT", "WT", "WT", "MT",
"MT", "MT", "MT", "MT", "MT", "MT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "MT", "MT", "MT", "MT", "MT", "MT", "MT",
"MT", "MT", "WT", "WT", "WT", "MT", "MT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "MT", "WT", "MT", "MT",
"WT", "WT", "WT", "WT", "WT", "MT", "MT", "WT", "WT", "WT",
"WT", "MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT",
"MT", "MT", "MT", "MT", "MT", "MT", "MT", "WT", "WT", "WT",
"WT", "WT", "MT", "MT", "MT", "MT", "MT", "MT", "MT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "MT", "WT", "MT",
"MT", "MT", "WT", "WT", "MT", "MT", "MT", "WT", "MT", "MT",
"WT", "WT", "WT", "WT", "MT", "WT", "WT", "MT", "MT", "MT",
"MT", "MT", "MT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "MT", "MT", "WT", "WT", "MT", "WT", "WT", "WT", "MT",
"WT", "MT", "WT", "MT", "MT", "MT", "WT", "MT", "MT", "MT",
"MT", "MT", "WT", "MT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "MT", "WT",
"WT", "WT", "MT", "MT", "MT", "MT", "MT", "MT", "MT", "WT",
"WT", "MT", "WT", "MT", "WT", "MT", "WT", "WT", "MT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "MT", "MT", "MT",
"MT", "MT", "WT", "WT", "MT", "MT", "MT", "MT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "MT", "MT",
"MT", "MT", "MT", "MT", "WT", "WT", "WT", "WT", "WT", "WT",
"MT", "MT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "MT",
"MT", "MT", "MT", "WT", "WT", "MT", "MT", "MT", "MT", "MT",
"MT", "MT", "MT", "MT"), gene3 = c("WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "MT", "MT", "MT", "MT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "MT", "MT", "WT", "WT", "MT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "MT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "MT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "MT", "WT", "WT", "WT", "WT", "WT",
"WT", "MT", "MT", "MT", "MT", "MT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "MT", "MT",
"MT", "MT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT"), gene4 = c("WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "MT", "MT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "MT", "MT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "MT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "MT", "MT",
"MT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "MT", "MT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT")), row.names = c(NA,
-280L), class = "data.frame")
我想对每一列分别统计2:5列中每个因子的个数,也分为column1中的因子。
我可以通过 mydata %>% group_by(group) %>% select(gene1) %>% table()
对单个列实现此目的,但不能同时对所有列实现。
我还想在每一行的末尾添加一个百分比为 "WT"
的列。
谢谢。
以下代码给出了与示例不同的输出结构,但包含每列每组的数据:
library(reshape2)
mydata1 = melt(mydata,id.vars = c('group'))
mydata2 = mydata1 %>%
dplyr::group_by_all() %>%
dplyr::summarise(Count = n()) %>%
dplyr::group_by(group,variable) %>%
dplyr::mutate(Sum = sum(Count,na.rm=T)) %>%
dplyr::ungroup() %>%
dplyr::mutate(percentage = Count/Sum*100)
输出结果如下:
group variable value Count Sum percentage
1 K1 gene1 MT 49 58 84.482759
2 K1 gene1 WT 9 58 15.517241
3 K2 gene1 MT 15 18 83.333333
4 K2 gene1 WT 3 18 16.666667
5 K3 gene1 MT 45 54 83.333333
6 K3 gene1 WT 9 54 16.666667
7 K4 gene1 MT 77 85 90.588235
8 K4 gene1 WT 8 85 9.411765
9 K5 gene1 MT 35 65 53.846154
10 K5 gene1 WT 30 65 46.153846
11 K1 gene2 MT 46 58 79.310345
12 K1 gene2 WT 12 58 20.689655
13 K2 gene2 MT 4 18 22.222222
14 K2 gene2 WT 14 18 77.777778
15 K3 gene2 MT 23 54 42.592593
16 K3 gene2 WT 31 54 57.407407
17 K4 gene2 MT 23 85 27.058824
18 K4 gene2 WT 62 85 72.941176
19 K5 gene2 MT 30 65 46.153846
20 K5 gene2 WT 35 65 53.846154
21 K1 gene3 MT 2 58 3.448276
22 K1 gene3 WT 56 58 96.551724
23 K2 gene3 WT 18 18 100.000000
24 K3 gene3 MT 5 54 9.259259
25 K3 gene3 WT 49 54 90.740741
26 K4 gene3 MT 7 85 8.235294
27 K4 gene3 WT 78 85 91.764706
28 K5 gene3 MT 5 65 7.692308
29 K5 gene3 WT 60 65 92.307692
30 K1 gene4 MT 2 58 3.448276
31 K1 gene4 WT 56 58 96.551724
32 K2 gene4 WT 18 18 100.000000
33 K3 gene4 MT 2 54 3.703704
34 K3 gene4 WT 52 54 96.296296
35 K4 gene4 MT 4 85 4.705882
36 K4 gene4 WT 81 85 95.294118
37 K5 gene4 MT 2 65 3.076923
38 K5 gene4 WT 63 65 96.923077
您可以将数据重塑为长格式,然后 count
出现
library(dplyr)
df %>%
tidyr::pivot_longer(cols = -group) %>%
#Or in older version use gather
#gather(name, value, -group) %>%
count(group, name, value)
# A tibble: 38 x 4
# group name value n
# <chr> <chr> <chr> <int>
# 1 K1 gene1 MT 49
# 2 K1 gene1 WT 9
# 3 K1 gene2 MT 46
# 4 K1 gene2 WT 12
# 5 K1 gene3 MT 2
# 6 K1 gene3 WT 56
# 7 K1 gene4 MT 2
# 8 K1 gene4 WT 56
# 9 K2 gene1 MT 15
#10 K2 gene1 WT 3
# … with 28 more rows
要得到你能做到的比例
df %>%
tidyr::pivot_longer(cols = -group) %>%
count(group, name, value) %>%
group_by(group, name) %>%
mutate(mean_n = n/sum(n))
我有如下数据框:
structure(list(group = c("K4", "K4", "K1", "K1", "K4", "K4",
"K1", "K4", "K5", "K4", "K4", "K5", "K4", "K3", "K3", "K4", "K4",
"K4", "K4", "K3", "K3", "K5", "K3", "K5", "K3", "K5", "K3", "K3",
"K1", "K4", "K5", "K4", "K2", "K4", "K2", "K5", "K1", "K1", "K1",
"K1", "K1", "K1", "K3", "K4", "K3", "K3", "K3", "K1", "K1", "K5",
"K5", "K1", "K1", "K1", "K1", "K1", "K1", "K5", "K1", "K3", "K4",
"K3", "K2", "K4", "K4", "K4", "K3", "K2", "K4", "K3", "K4", "K3",
"K2", "K5", "K4", "K3", "K4", "K5", "K5", "K4", "K4", "K4", "K4",
"K1", "K2", "K4", "K4", "K5", "K3", "K3", "K5", "K5", "K4", "K4",
"K4", "K4", "K3", "K1", "K3", "K5", "K3", "K3", "K3", "K4", "K1",
"K1", "K2", "K5", "K5", "K5", "K3", "K5", "K4", "K5", "K5", "K4",
"K2", "K5", "K2", "K4", "K4", "K4", "K4", "K4", "K4", "K3", "K4",
"K1", "K2", "K4", "K1", "K4", "K4", "K4", "K1", "K1", "K5", "K5",
"K1", "K5", "K5", "K5", "K4", "K3", "K3", "K5", "K4", "K4", "K3",
"K2", "K3", "K4", "K3", "K3", "K3", "K3", "K3", "K3", "K5", "K4",
"K5", "K5", "K4", "K5", "K1", "K5", "K1", "K1", "K5", "K5", "K5",
"K1", "K4", "K5", "K1", "K3", "K5", "K4", "K5", "K2", "K2", "K4",
"K1", "K2", "K3", "K4", "K4", "K2", "K4", "K4", "K2", "K4", "K5",
"K5", "K3", "K2", "K4", "K4", "K1", "K1", "K1", "K1", "K4", "K3",
"K3", "K4", "K5", "K5", "K4", "K5", "K4", "K3", "K4", "K5", "K3",
"K4", "K1", "K3", "K3", "K4", "K3", "K4", "K3", "K1", "K5", "K5",
"K1", "K1", "K5", "K5", "K1", "K1", "K1", "K1", "K5", "K4", "K4",
"K3", "K3", "K3", "K3", "K3", "K3", "K4", "K4", "K5", "K1", "K4",
"K5", "K5", "K4", "K4", "K5", "K4", "K5", "K5", "K4", "K4", "K5",
"K4", "K5", "K5", "K5", "K5", "K5", "K2", "K1", "K5", "K1", "K4",
"K4", "K1", "K1", "K1", "K1", "K1", "K1", "K1", "K1", "K1"),
gene1 = c("MT", "MT", "WT", "WT", "MT", "MT", "MT", "MT",
"WT", "MT", "MT", "WT", "MT", "MT", "MT", "MT", "MT", "MT",
"MT", "MT", "MT", "WT", "MT", "MT", "MT", "WT", "MT", "MT",
"MT", "MT", "WT", "WT", "MT", "MT", "MT", "WT", "MT", "MT",
"MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT",
"MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT", "WT",
"MT", "WT", "MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT",
"MT", "MT", "MT", "MT", "MT", "MT", "WT", "WT", "MT", "WT",
"WT", "MT", "MT", "MT", "MT", "WT", "MT", "MT", "MT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "MT", "MT", "MT",
"WT", "MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT",
"MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT",
"WT", "MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT",
"MT", "MT", "MT", "WT", "MT", "MT", "MT", "MT", "WT", "WT",
"MT", "MT", "MT", "WT", "MT", "MT", "MT", "MT", "MT", "MT",
"WT", "MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT",
"WT", "MT", "WT", "MT", "WT", "MT", "MT", "WT", "MT", "WT",
"MT", "WT", "WT", "WT", "MT", "MT", "WT", "MT", "WT", "WT",
"WT", "WT", "WT", "MT", "MT", "MT", "MT", "MT", "MT", "MT",
"MT", "MT", "MT", "MT", "WT", "MT", "WT", "MT", "MT", "MT",
"MT", "MT", "MT", "WT", "MT", "WT", "MT", "MT", "WT", "WT",
"MT", "WT", "MT", "WT", "MT", "WT", "MT", "MT", "MT", "MT",
"MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT", "WT",
"MT", "WT", "MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT",
"MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT",
"MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT",
"WT", "MT", "MT", "MT", "MT", "MT", "MT", "MT", "WT", "WT",
"MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT",
"MT", "MT"), gene2 = c("WT", "WT", "MT", "MT", "MT", "MT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "MT", "WT", "WT", "WT",
"MT", "WT", "MT", "WT", "WT", "MT", "WT", "WT", "WT", "MT",
"MT", "MT", "MT", "MT", "MT", "MT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "MT", "MT", "MT", "MT", "MT", "MT", "MT",
"MT", "MT", "WT", "WT", "WT", "MT", "MT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "MT", "WT", "MT", "MT",
"WT", "WT", "WT", "WT", "WT", "MT", "MT", "WT", "WT", "WT",
"WT", "MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT", "MT",
"MT", "MT", "MT", "MT", "MT", "MT", "MT", "WT", "WT", "WT",
"WT", "WT", "MT", "MT", "MT", "MT", "MT", "MT", "MT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "MT", "WT", "MT",
"MT", "MT", "WT", "WT", "MT", "MT", "MT", "WT", "MT", "MT",
"WT", "WT", "WT", "WT", "MT", "WT", "WT", "MT", "MT", "MT",
"MT", "MT", "MT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "MT", "MT", "WT", "WT", "MT", "WT", "WT", "WT", "MT",
"WT", "MT", "WT", "MT", "MT", "MT", "WT", "MT", "MT", "MT",
"MT", "MT", "WT", "MT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "MT", "WT",
"WT", "WT", "MT", "MT", "MT", "MT", "MT", "MT", "MT", "WT",
"WT", "MT", "WT", "MT", "WT", "MT", "WT", "WT", "MT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "MT", "MT", "MT",
"MT", "MT", "WT", "WT", "MT", "MT", "MT", "MT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "MT", "MT",
"MT", "MT", "MT", "MT", "WT", "WT", "WT", "WT", "WT", "WT",
"MT", "MT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "MT",
"MT", "MT", "MT", "WT", "WT", "MT", "MT", "MT", "MT", "MT",
"MT", "MT", "MT", "MT"), gene3 = c("WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "MT", "MT", "MT", "MT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "MT", "MT", "WT", "WT", "MT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "MT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "MT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "MT", "WT", "WT", "WT", "WT", "WT",
"WT", "MT", "MT", "MT", "MT", "MT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "MT", "MT",
"MT", "MT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT"), gene4 = c("WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "MT", "MT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "MT", "MT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "MT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "MT", "MT",
"MT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "MT", "MT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT",
"WT", "WT", "WT", "WT", "WT", "WT", "WT", "WT")), row.names = c(NA,
-280L), class = "data.frame")
我想对每一列分别统计2:5列中每个因子的个数,也分为column1中的因子。
我可以通过 mydata %>% group_by(group) %>% select(gene1) %>% table()
对单个列实现此目的,但不能同时对所有列实现。
我还想在每一行的末尾添加一个百分比为 "WT"
的列。
谢谢。
以下代码给出了与示例不同的输出结构,但包含每列每组的数据:
library(reshape2)
mydata1 = melt(mydata,id.vars = c('group'))
mydata2 = mydata1 %>%
dplyr::group_by_all() %>%
dplyr::summarise(Count = n()) %>%
dplyr::group_by(group,variable) %>%
dplyr::mutate(Sum = sum(Count,na.rm=T)) %>%
dplyr::ungroup() %>%
dplyr::mutate(percentage = Count/Sum*100)
输出结果如下:
group variable value Count Sum percentage
1 K1 gene1 MT 49 58 84.482759
2 K1 gene1 WT 9 58 15.517241
3 K2 gene1 MT 15 18 83.333333
4 K2 gene1 WT 3 18 16.666667
5 K3 gene1 MT 45 54 83.333333
6 K3 gene1 WT 9 54 16.666667
7 K4 gene1 MT 77 85 90.588235
8 K4 gene1 WT 8 85 9.411765
9 K5 gene1 MT 35 65 53.846154
10 K5 gene1 WT 30 65 46.153846
11 K1 gene2 MT 46 58 79.310345
12 K1 gene2 WT 12 58 20.689655
13 K2 gene2 MT 4 18 22.222222
14 K2 gene2 WT 14 18 77.777778
15 K3 gene2 MT 23 54 42.592593
16 K3 gene2 WT 31 54 57.407407
17 K4 gene2 MT 23 85 27.058824
18 K4 gene2 WT 62 85 72.941176
19 K5 gene2 MT 30 65 46.153846
20 K5 gene2 WT 35 65 53.846154
21 K1 gene3 MT 2 58 3.448276
22 K1 gene3 WT 56 58 96.551724
23 K2 gene3 WT 18 18 100.000000
24 K3 gene3 MT 5 54 9.259259
25 K3 gene3 WT 49 54 90.740741
26 K4 gene3 MT 7 85 8.235294
27 K4 gene3 WT 78 85 91.764706
28 K5 gene3 MT 5 65 7.692308
29 K5 gene3 WT 60 65 92.307692
30 K1 gene4 MT 2 58 3.448276
31 K1 gene4 WT 56 58 96.551724
32 K2 gene4 WT 18 18 100.000000
33 K3 gene4 MT 2 54 3.703704
34 K3 gene4 WT 52 54 96.296296
35 K4 gene4 MT 4 85 4.705882
36 K4 gene4 WT 81 85 95.294118
37 K5 gene4 MT 2 65 3.076923
38 K5 gene4 WT 63 65 96.923077
您可以将数据重塑为长格式,然后 count
出现
library(dplyr)
df %>%
tidyr::pivot_longer(cols = -group) %>%
#Or in older version use gather
#gather(name, value, -group) %>%
count(group, name, value)
# A tibble: 38 x 4
# group name value n
# <chr> <chr> <chr> <int>
# 1 K1 gene1 MT 49
# 2 K1 gene1 WT 9
# 3 K1 gene2 MT 46
# 4 K1 gene2 WT 12
# 5 K1 gene3 MT 2
# 6 K1 gene3 WT 56
# 7 K1 gene4 MT 2
# 8 K1 gene4 WT 56
# 9 K2 gene1 MT 15
#10 K2 gene1 WT 3
# … with 28 more rows
要得到你能做到的比例
df %>%
tidyr::pivot_longer(cols = -group) %>%
count(group, name, value) %>%
group_by(group, name) %>%
mutate(mean_n = n/sum(n))