首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中的列计数刚开始在GWAS中使用它,我迷路了

R中的列计数刚开始在GWAS中使用它,我迷路了
EN

Stack Overflow用户
提问于 2017-07-22 01:44:07
回答 1查看 33关注 0票数 0

有没有人能帮我算出每行单元格中一个字符的实例数?我有一个包含1000万个snps的文件,我想对其进行排序。

代码语言:javascript
复制
Direction
?????+-+-
?+-+-????
?-+-+??-+

上面是我拥有的许多专栏中的一个例子。我想要做的是计算"?“的数量。字符,然后添加一个新列,并将该计数作为数值。

我完全是一个初学者,在这方面投入了很深的末端,所以任何帮助都将不胜感激。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2017-07-22 02:03:04

给你两个答案

代码语言:javascript
复制
a <- data.frame(direction = c("?????+-+-", "?+-+-????","?-+-+??-+"),  
 stringAsFactors = F)
a$return <- lengths(regmatches(a$direction, gregexpr("\\?", a$direction)))

或根据评论

代码语言:javascript
复制
a$return <- nchar(gsub("[^?]", "", a$direction))

两者都返回

代码语言:javascript
复制
'data.frame':   3 obs. of  2 variables:
 $ direction: chr  "?????+-+-" "?+-+-????" "?-+-+??-+"
 $ return   : int  5 5 3

有很多方法可以做到这一点,这取决于你正在寻找的是什么。

更新

虽然它可能不是base R,但tidyverse中的包对于数据争论很有用,并且可以用来轻松地将几个调用串在一起。

代码语言:javascript
复制
install.packages("dplyr")
library(dplyr)
df <- data.frame(Direction = c("???????????-?", "???????????+?", "???????????+?", "???????????-?"), stringsAsFactors = F)
df %>% 
  mutate(qmark = nchar(gsub("[^?]", "", Direction)),
         pos = nchar(gsub("[^+]", "", Direction)),
         neg = nchar(gsub("[^-]", "", Direction)),
         qminus = qmark-(pos+neg),
         total = nchar(Direction))  


      Direction qmark pos neg qminus total
1 ???????????-?    12   0   1     11    13
2 ???????????+?    12   1   0     11    13
3 ???????????+?    12   1   0     11    13
4 ???????????-?    12   0   1     11    13

但是,如果您的数据集有1000万行,那么您可能希望使用基于一些基准testingstringi

代码语言:javascript
复制
install.packages("stringi")
library(stringi)
df %>% 
  mutate(qmark = stri_count(Direction, fixed = "?"),
         pos = stri_count(Direction, fixed = "+"),
         neg = stri_count(Direction, fixed = "-"), 
         qminus = qmark-(pos+neg))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45243728

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档