gpt4 book ai didi

r - 使用数据框中的两个分组获取频率

转载 作者:行者123 更新时间:2023-12-04 10:47:42 35 4
gpt4 key购买 nike

我有一个数据框如下(称为dat)

chr   chrStart  chrEnd  Gene    RChr    RStart  REnd    Rname   distance
chr1 39841 39883 Gene1 chr1 398 3984 Cha1b 0
chr1 39841 39883 Gene1 chr1 398 3985 Ab 0
chr1 39841 39883 Gene1 chr1 398 3986 Tia 0
chr1 39841 39883 Gene1 chr1 398 3987 MEA 0
chr1 39841 39883 Gene1 chr1 398 3988 La 0
chr1 39841 39883 Gene1 chr1 398 3989 M3 0
chr1 14893 15893 Gene2 chr1 398 3984 Cha1b 0
chr1 14893 15893 Gene2 chr1 398 3985 Cha1b 0
chr1 14893 15893 Gene2 chr1 398 3986 Cha1b 0
chr1 14893 15893 Gene2 chr1 398 3987 MEA 0
chr1 14893 15893 Gene2 chr1 398 3988 MEA 0
chr1 39841 39883 Gene1 chr1 398 3989 M3 0

我想得到每个基因不同类型的 Rname 出现的频率,所以上面的结果应该是这样的

Gene     Rname      Freq
Gene1 Cha1b 1
Gene1 Ab 1
Gene1 Tia 1
Gene1 MEA 1
Gene1 La 1
Gene1 M3 1
Gene2 Cha1b 3
Gene2 MEA 2
Gene2 M3 1

我尝试用 dplyr 进行两个分组,但我认为这没有意义,而且它只是给了我每个基因的所有 Rnames 的频率

library(dplyr)
GroupTbb <- dat %>%
group_by(Gene) %>%
group_by(Rname) %>%
summarise(freq = sum(Rname))

最佳答案

您应该使用 n()(因为您不能对非数字值求和)来计算观察值,并且您可以同时按两个变量分组。

dat %>% 
group_by(Gene, Rname) %>%
summarise(freq = n())

# Source: local data frame [8 x 3]
# Groups: Gene
#
# Gene Rname freq
# 1 Gene1 Ab 1
# 2 Gene1 Cha1b 1
# 3 Gene1 La 1
# 4 Gene1 M3 2
# 5 Gene1 MEA 1
# 6 Gene1 Tia 1
# 7 Gene2 Cha1b 3
# 8 Gene2 MEA 2

或者使用tally

dat %>% 
group_by(Gene, Rname) %>%
tally()

或者(按照@hrbrmstr 的建议)您可以使用 count

跳过分组步骤
dat %>%
count(Gene, Rname)

关于r - 使用数据框中的两个分组获取频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29457111/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com