> head(Gene)
Key Func.ensGene Func.genericGene Func.refGene
1 1 intergenic intergenic intergenic
2 2 intergenic intergenic intergenic
3 3 intergenic intergenic intronic
4 4 exonic exonic exonic
5 5 intergenic intergenic intronic
6 6 intergenic intergenic intronic
必需的输出:
Type Func.ensGene Func.genericGene Func.refGene
exonic 1 1 1
intergenic 5 5 2
intronic 0 0 3
我尝试的解决方案仅适用于一列:
unique(Gene["Func.ensGene"])
我能否获得如上所示的输出表并获得条形图 X轴的“类型”在哪里,条形图代表每列的计数?
答案 0 :(得分:1)
我们可以从数据框中获取所有unique
级别,并针对每一列通过首先将其转换为具有先前计算的唯一级别的factor
来计算每个级别的计数。
unique_names <- unique(unlist(df[-1]))
sapply(df[-1], function(x) table(factor(x, levels = unique_names)))
# Func.ensGene Func.genericGene Func.refGene
#intergenic 5 5 2
#exonic 1 1 1
#intronic 0 0 3
答案 1 :(得分:1)
只需将?xtabs
与?stack
一起使用:
xtabs( ~ values + ind , stack(df1[,-1]))
或更短,如@nicola所建议的:
table(stack(df1[,-1]))
你们俩都得到:
# ind
#values Func.ensGene Func.genericGene Func.refGene
# exonic 1 1 1
# intergenic 5 5 2
# intronic 0 0 3
您是否希望进一步处理data.frame?
as.data.frame.matrix(
xtabs( ~ values + ind , stack(df1[,-1])) # or again only table(stack(df1[,-1]))
)
答案 2 :(得分:0)
喜欢基本的R解决方案,但是使用cat genesis.json.src | jq --arg pub_key $PK --arg name node$i --arg addr $ADDR '.validators+= [{address: $addr, pub_key: $pub_key, power:"10",name:$name}]' > genesis.json.dest
和一些data.table
可以提高可读性,您可以直接获取data.frame(而不是表):
magrittr
或更简洁(如Henrik所建议):
library(magrittr)
library(data.table)
setDT(df)
df %>%
melt(id.vars = "Key") %>%
.[, .N, .(variable, value)] %>%
dcast(value ~ variable, value.var = "N", fill = 0)
value Func.ensGene Func.genericGene Func.refGene
1: exonic 1 1 1
2: intergenic 5 5 2
3: intronic 0 0 3
如果您喜欢tidyverse函数:
dcast(melt(df, "Key"), value ~ variable)
数据:
library(tidyr)
df %>%
gather(key = Key) %>%
group_by(Key, value) %>%
count() %>%
spread(Key, n, fill = 0)
# A tibble: 3 x 4
# Groups: value [3]
value Func.ensGene Func.genericGene Func.refGene
<chr> <dbl> <dbl> <dbl>
1 exonic 1 1 1
2 intergenic 5 5 2
3 intronic 0 0 3