[R] Converting character to numeric using the package "XLConnect"

Jeff Newmiller jdnewmil at dcn.davis.ca.us
Thu Aug 31 05:09:19 CEST 2017


This seems to be a case where the question exists because the asker thinks R acts like Excel, instead of learning how R does work. 

Data frames in R are lists of columns. Each column is a vector, and all elements in a vector are the same type. [1] Since a number can be stored in a character string, but a character string cannot be stored in a number, when you try to pull in columns that contain both character and numeric data the only way to hold all of it within the same vector is to use character for all of it. Your attempts to convert any single element of a character vector into numeric are destined to fail.

The key to success will be to avoid attempting that. One way to deal with something like this is to read rows 2 through 10 as one data frame and rows 11 through 14 as another data frame, but I have no idea why you want your data laid out this way so I don't know if this helps you. 
-- 
Sent from my phone. Please excuse my brevity.

On August 30, 2017 1:30:41 PM PDT, Nelly Reduan <nell.redu at hotmail.fr> wrote:
>The Excel file can be found from this link:
>https://1drv.ms/x/s!Apkg2VlgfYyDgQ_mcJ8F4CaXV_Nh
>
>[https://r1.res.office365.com/owa/prem/images/dc-xlsx_40.png]<https://1drv.ms/x/s!Apkg2VlgfYyDgQ_mcJ8F4CaXV_Nh>
>File.xlsx<https://1drv.ms/x/s!Apkg2VlgfYyDgQ_mcJ8F4CaXV_Nh>
>Partag� via OneDrive
>
>
>
>
>
>Thanks very much for your help.
>
>Nell
>
>________________________________
>De : David Winsemius <dwinsemius at comcast.net>
>Envoy� : mercredi 30 ao�t 2017 12:59:57
>� : Nelly Reduan
>Cc : r-help at r-project.org
>Objet : Re: [R] Converting character to numeric using the package
>"XLConnect"
>
>
>> On Aug 30, 2017, at 12:24 PM, Nelly Reduan <nell.redu at hotmail.fr>
>wrote:
>>
>> Hello,
>>
>> From an Excel file imported into R where each cell contains
>characters, I would like to convert some characters to numeric.
>However, my code doesn�t work. When I write data to worksheets in an
>Excel file, some numbers in the cells are stored as text (instead of
>numeric). Here is my code (the Excel file is attached):
>
>Nope. No file was attached in what was circulated. The list-server
>scrubs potentially malicious files (including zip, csv, or xls files).
>You could send a "csv" file with extension of ".txt".
>>
>> rm(list=ls(all=TRUE))
>> library(XLConnect)
>> tab <- loadWorkbook("C:/Users/Downloads/File.xlsx", create = TRUE)
>> set <- readWorksheet(tab, sheet = "settings")
>> setNum <- readWorksheet(tab, sheet = "settings", colTypes="numeric")
>
>Presumably you could also send the results of
>
>dput(setNum)
>
>.. either as a .txt attachment or embedded in an email.
>
>> index <- which((!is.na(setNum)), arr.ind=TRUE)
>> if(length(index)!=0){
>>  set[index] <- unlist(lapply(set[index], function(x)
>as.numeric(as.character(x))))
>> }
>> ## to check
>[[elided Hotmail spam]]
>>
>> writeWorksheetToFile("C:/Users/Downloads/Test.xlsx", data=set,
>sheet="settings", styleAction = XLC$"STYLE_ACTION.NONE")
>>
>> How can I convert the numbers which are stored as characters to
>numeric?
>
>Have you tried using the formatting features of Excel to change the
>default "auto" sttings of black columns? You could select an entire
>column and set its format to numeric. I know this sometimes fixes the
>annoying habit of Excel of changing texts items withn interior dashes
>to dates.
>
>--
>
>David Winsemius
>Alameda, CA, USA
>
>'Any technology distinguishable from magic is insufficiently advanced.'
>  -Gehm's Corollary to Clarke's Third Law
>
>
>
>
>
>
>	[[alternative HTML version deleted]]



More information about the R-help mailing list