![](/img/trans.png)
[英]R. I am trying to subset my data frame by decades. Therefore I want to subset by using values of a column
[英]Column counting in R. Just started using it for GWAS and I am lost
谁能帮我解决如何计算每行单元格中字符实例的数量吗? 我有一个要排序的1000万个snps文件。
Direction
?????+-+-
?+-+-????
?-+-+??-+
上面是我拥有的许多专栏之一的示例。 我要计算的是“?”的数量 每行中的每个字符,然后添加一个新列,并将该计数作为数值。
我完全是个初学者,对此深有体会,因此我们将不胜感激。
谢谢。
给你两个答案
a <- data.frame(direction = c("?????+-+-", "?+-+-????","?-+-+??-+"),
stringAsFactors = F)
a$return <- lengths(regmatches(a$direction, gregexpr("\\?", a$direction)))
或根据评论
a$return <- nchar(gsub("[^?]", "", a$direction))
都回来了
'data.frame': 3 obs. of 2 variables:
$ direction: chr "?????+-+-" "?+-+-????" "?-+-+??-+"
$ return : int 5 5 3
有很多方法可以做到这一点,取决于您要寻找的东西。
tidyverse中的程序包可能不是以R为基数的,但它们对于数据整理很有用,可用于轻松地将几个调用串在一起。
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万行,则可能需要根据一些基准测试使用stringi
。
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))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.