r - 数据框中出现的次数
问题描述
我有以下数据框,我想按第一列计算每一行的出现次数,并作为另一列附加到数据框中说“freq”:
东风:
gene a b c
abc 1 NA 1
bca NA 1 1
cba 1 2 1
我的 df 更大,所以这只是一个可扩展的例子。
期望的数据框是:
gene a b c freq
abc 1 NA 1 2
bca NA 1 1 2
cba 1 2 1 3
我尝试过的代码是:
g <- df %>% mutate(numtwos = rowSums(. > 0))
或者
df$freq <- apply(df , 1, function(x) length(which(x>0)))
但它不起作用,因为如果连续应该有(例如)150 次重复,我每行只获得 2 次。
欢迎任何帮助或其他观点!
谢谢
解决方案
我们可以先使用转换Na
为“NA”
library(dplyr)
df %>%
mutate_at(vars(a:c), ~ as.numeric(na_if(., "Na"))) %>%
mutate(freq = rowSums(select(., a:c), na.rm = TRUE))
# gene a b c freq
#1 abc 1 NA 1 2
#2 bca NA 1 1 2
#3 cba 1 1 1 3
这里的值都是1,所以和得到non-NA的和是一样的
df %>%
mutate_at(vars(a:c), ~ as.numeric(na_if(., "Na"))) %>%
mutate(freq = rowSums(!is.na(select(., a:c))))
数据
df <- structure(list(gene = c("abc", "bca", "cba"), a = c("1", "Na",
"1"), b = c("Na", "1", "1"), c = c(1L, 1L, 1L)),
class = "data.frame", row.names = c(NA,
-3L))
推荐阅读
- html - 如何在按钮 onclick 中调用函数?
- ios - 滑动手势问题
- reactjs - 从 url react-router-redux 中删除查询参数
- javascript - 类型错误:val.split 不是函数
- java - 如何在应用程序运行时禁用 RequestMapping?
- javascript - 我试图将 Json 数据提取到我的选择器列表中,但它在本机反应中不起作用
- php - SQL - 如果不为空,则选择不同表中的列
- css - 使用 css 的贴纸拉出效果
- java - Symphony 聊天机器人的自动化部署后测试
- php - CakePHP 3 CakePdf wkhtmltopdf 从shell生成视图时出现的css问题