[R] Counting the occurences of a charater within a string
Bert Gunter
gunter.berton at gene.com
Fri Dec 2 05:11:07 CET 2011
strsplit is certainly an alternative, but your approach is
unnecessarily complicated and inefficient. Do this, instead:
sapply(strsplit(x,"/"),length)-1
Cheers,
Bert
On Thu, Dec 1, 2011 at 7:44 PM, Florent D. <flodel at gmail.com> wrote:
> Resending my code, not sure why the linebreaks got eaten:
>
>> x <- data.frame(Col1 = c("abc/def", "ghi/jkl/mno"), stringsAsFactors = FALSE)
>> count.slashes <- function(string)sum(unlist(strsplit(string, NULL)) == "/")
>> within(x, Col2 <- vapply(Col1, count.slashes, 1))
> Col1 Col2
> 1 abc/def 1
> 2 ghi/jkl/mno 2
>
>
> On Thu, Dec 1, 2011 at 10:32 PM, Florent D. <flodel at gmail.com> wrote:
>> I used within and vapply:
>>
>> x <- data.frame(Col1 = c("abc/def", "ghi/jkl/mno"), stringsAsFactors = FALSE)
>> count.slashes <- function(string)sum(unlist(strsplit(string, NULL)) ==
>> "/")within(x, Col2 <- vapply(Col1, count.slashes, 1))
>> Col1 Col21 abc/def 12 ghi/jkl/mno 2
>>
>> On Thu, Dec 1, 2011 at 1:05 PM, Bert Gunter <gunter.berton at gene.com> wrote:
>>> ## It's not a data frame -- it's just a vector.
>>>
>>>> x
>>> [1] "abc/def" "ghi/jkl/mno"
>>>> gsub("[^/]","",x)
>>> [1] "/" "//"
>>>> nchar(gsub("[^/]","",x))
>>> [1] 1 2
>>>>
>>>
>>> ?gsub
>>> ?nchar
>>>
>>> -- Bert
>>>
>>> On Thu, Dec 1, 2011 at 8:32 AM, Douglas Esneault
>>> <Douglas.Esneault at mecglobal.com> wrote:
>>>> I am new to R but am experienced SAS user and I was hoping to get some help on counting the occurrences of a character within a string at a row level.
>>>>
>>>> My dataframe, x, is structured as below:
>>>>
>>>> Col1
>>>> abc/def
>>>> ghi/jkl/mno
>>>>
>>>> I found this code on the board but it counts all occurrences of "/" in the dataframe.
>>>>
>>>> chr.pos <- which(unlist(strsplit(x,NULL))=='/')
>>>> chr.count <- length(chr.pos)
>>>> chr.count
>>>> [1] 3
>>>>
>>>> I'd like to append a column, say cnt, that has the count of "/" for each row.
>>>>
>>>> Can anyone point me in the right direction or offer some code to do this?
>>>>
>>>> Thanks in advance for the help.
>>>>
>>>> Doug Esneault
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> Privileged/Confidential Information may be contained in this message. If you
>>>> are not the addressee indicated in this message (or responsible for delivery
>>>> of the message to such person), you may not copy or deliver this message to
>>>> anyone. In such case, you should destroy this message and kindly notify the
>>>> sender by reply email. Please advise immediately if you or your employer
>>>> does not consent to email for messages of this kind. Opinions, conclusions
>>>> and other information in this message that do not relate to the official
>>>> business of the GroupM companies shall be understood as neither given nor
>>>> endorsed by it. GroupM companies are a member of WPP plc. For more
>>>> information on our business ethical standards and Corporate Responsibility
>>>> policies please refer to our website at
>>>> http://www.wpp.com/WPP/About/
>>>>
>>>>
>>>> ______________________________________________
>>>> R-help at r-project.org mailing list
>>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>>> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
>>>> and provide commented, minimal, self-contained, reproducible code.
>>>
>>>
>>>
>>> --
>>>
>>> Bert Gunter
>>> Genentech Nonclinical Biostatistics
>>>
>>> Internal Contact Info:
>>> Phone: 467-7374
>>> Website:
>>> http://pharmadevelopment.roche.com/index/pdb/pdb-functional-groups/pdb-biostatistics/pdb-ncb-home.htm
>>>
>>> ______________________________________________
>>> R-help at r-project.org mailing list
>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
>>> and provide commented, minimal, self-contained, reproducible code.
--
Bert Gunter
Genentech Nonclinical Biostatistics
Internal Contact Info:
Phone: 467-7374
Website:
http://pharmadevelopment.roche.com/index/pdb/pdb-functional-groups/pdb-biostatistics/pdb-ncb-home.htm
More information about the R-help
mailing list