|  |  | 
[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]
Re: st: RE: summing up digits and comparing to a check digit
I seem to be the only person who came across this problem for the first 
time...
Thanks for all the contributions, very interesting indeed
Lia
Richard Atkins wrote:
Rather than use the mod function I would recommend converting all your
values to formatted strings using the =string(varname, format) command
prior to extracting the digits.
In general the mod function works well but I have come across datasets
where values that displayed in tables and lists as (for example) 0.7
produced a '6' when I tried to extract the 'tenths' digit using
mod(int(varname*10),10).  It turned out that the floating point
representation of this value in the dta file was actually 0.69999999 so
the mod function gave me exactly what I asked for rather than what I
actually wanted.
Some examples of extracting digits in this way are available in my
digit preference functions at
http://www.richardatkins.co.uk/statistics/statabits.htm
Regards
Richard A.
[email protected] 
 
[email protected] 03/15/06 3:04 pm >>>
       
-pnrcheck- from SSC covers the Swedish case. 
In this case, look _inside_ the program 
for some ideas. String functions are not 
the only way. -mod()- is also useful. 
The authors of -pnrcheck- are two Italians
and a Welshman, just who you would expect
to be working on Swedish identifiers. 
Nick 
[email protected] 
Lia Orfei
 
I have a variable that contains 7-digit numbers; the first 
digit is the 
remainder of the sum of the last six digits divided by 10 
(check digit)
example: 1030332 => 0+3+0+3+3+2=11/10=1+1 => check digit=1
             12050457 => 0+5+0+4+5+7=21/10=2+1 => check digit=1
and so on.
Now I want to assess whther the check digit is correct for each
   
entry.
 
How do I calculate the partial sum of the contents of this variable?
Extra challenge: some of the numbers sum up to 10, 20 etc so 
the check 
digit is actually 0 and it does not appear in the data for 
some reason 
(example 50456 is correct becasue 5+0+4+5+6=20 so the remainder is
   
0).
 
Any ideas?? I was thinking about using the string functions.
   
*
*   For searches and help try:
*   http://www.stata.com/support/faqs/res/findit.html 
*   http://www.stata.com/support/statalist/faq 
*   http://www.ats.ucla.edu/stat/stata/
*
*   For searches and help try:
*   http://www.stata.com/support/faqs/res/findit.html
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/
 
--
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
*
*   For searches and help try:
*   http://www.stata.com/support/faqs/res/findit.html
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/