Chapter8
OperatinginS
8.1 The
search
List and
attach
AH4.1.1,KO4.1.3
·
The
search list
tells where S searches for objects (data, functions) and in
what order
a
> library(Hmisc,T)
> search()
[1] "_Data"
"Hmisc"
"splus"
"stat"
"data"
"trellis" "nlme3"
[8] "main"
Position 1
: place where objects and functions are first sought; also, in
distinction from all other search positions, the location where objects cre-
ated by users are stored. By default, the
_Data
directory is in search
position 1.
Position 2
: Hmisc in this example, because of the
library
command. If
_Data
contains no functions, Hmisc will then be the first place where the
system will find functions. If other functions by the same names as those
in Hmisc are found in higher positions, these will be ignored.
Positions 3-8
:other libraries of functions and data objects;
data
contains
example data frames and matrices
a
NotethatinS-P
LUS
6.xwhichwasusedhere,fullpathnamesarenotlistedin
search
’soutput.
73
Convert pdf into ppt online - control Library system:C# Create PDF from PowerPoint Library to convert pptx, ppt to PDF in C#.net, ASP.NET MVC, WinForms, WPF
Online C# Tutorial for Creating PDF from Microsoft PowerPoint Presentation
www.rasteredge.com
Convert pdf into ppt online - control Library system:VB.NET Create PDF from PowerPoint Library to convert pptx, ppt to PDF in vb.net, ASP.NET MVC, WinForms, WPF
VB.NET Tutorial for Export PDF file from Microsoft Office PowerPoint
www.rasteredge.com
CHAPTER8. OPERATINGINS
74
·
You can use the
attach
function to place any directory or data frame in
the search list. By default these go in search position 2, pushing objects
previously in positions
2,...
down.
·
To list names of all objects in search position
n
type
objects(n)
·
To list more information about all the objects in position
n
type
objects.summary(where=n)
8.1.1 Attaching Data Frames
·
Special use—puts data frame in search list (position 2 by default)
·
Also makes the data frame’s variables available without the
dataframe$
pre-
fix
> d ← data.frame(x=1:10, y=11:20)
> attach(d)
> search()
[1] ".Data"
"d"
"Hmisc"
"splus"
"stat"
"data"
"trellis"
[8] "nlme3"
"main"
> objects(2)
[1] "x" "y"
·
Note that
x, y
are found in position 2 where
d
is attached
·
The
find
function is useful for finding where objects are stored
> find(’x’)
[1] "d"
x
is found inside data frame
d
> range(x)
[1] 1 10
control Library system:Online Convert PowerPoint to PDF file. Best free online export
Convert a PPTX/PPT File to PDF. Just upload your file by clicking on the blue button or drag-and-drop your pptx or ppt file into the drop area.
www.rasteredge.com
control Library system:How to C#: Convert PDF, Excel, PPT to Word
How to C#: Convert PDF, Excel, PPT to Word. PDF, MS-Excel, MS-PPT to Word Conversion Overview. By integrating XDoc.Word SDK into your C#.NET project, PDF, MS
www.rasteredge.com
CHAPTER8. OPERATINGINS
75
You can access the value of
x
by typing
x
in addition to
d$x
after
d
is attached
8.1.2 Detaching Data Frames
·
Important:Besuretodetachdataframesassoonasyouarefinishedwork-
ing with its variables if you go on to work on other data, e.g., if you start
dealing with a different data frame or a different subset of the observations
·
detach(2)
will detach the last thing
attach
ed if it was attached in the default
second search position
8.2 Subsetting Data Frames
AH4.1.2
·
You can create new data frames that are subsets of old ones
df.males ← df[df$sex==’male’,]
To avoid confusion,don’t run such commands with any data frame
attach
ed.
·
attach
is often a better way to begin a long analysis of a subset of a data
frame because it doesn’t require storing the subset on disk
attach(df[,c(’age’,’sex’)])
# all rows, 2 vars
attach(df[c(’age’,’sex’)])
# same, using list notation
attach(df[,Cs(age,sex)])
# same, using shorthand quoting function
attach(df[df$sex==’male’,])
# all vars, males
attach(df[1:100,c(1:2,4:7)]) # rows 1-100, cols 1-2,4-7
attach(df[,-4])
# all but 4th variable
attach(df[df$treat %in% c(’a’,’b’,’c’),])
# obs. for treat a-c
attach(df[!is.na(df$age) & !is.na(df$sex),]) # exclude obs with NAs
After running such commands, referencing a variable from the attached data
frame (e.g., just typing
age
)references the appropriate subset of the vector
control Library system:How to C#: Convert Word, Excel and PPT to PDF
How to C#: Convert Word, Excel and PPT to PDF. MS Office to PDF Conversion Overview. By integrating XDoc.PDF SDK into your C#.NET project, Microsoft Office
www.rasteredge.com
control Library system:VB.NET PowerPoint: Convert & Render PPT into PDF Document
directly encode converted image source into PDF document file converted image source to PDF format, RasterEdge VB other encoding APIs to convert rendered image
www.rasteredge.com
CHAPTER8. OPERATINGINS
76
·
If only analyzing a small subset of variables, attaching only those columns
can speed up the program
·
Amore elegant approach may be achieved using R’s
subset
function which
is implemented in Hmisc
– Variablenamesdonotneedprefixingby
dataframe$
subset
provides an elegant notation for subsetting variables by looking
up column numbers corresponding to column names
allows consecutive variables to keep or drop to be specified
·
Examples:
> # Subset a simple vector
> x1 <- 1:4
> sex <- rep(c(’male’,’female’),2)
> subset(x1, sex==’male’)
[1] 1 3
> # Subset a data frame
> d <- data.frame(x1=x1, x2=(1:4)/10, x3=(11:14), sex=sex)
> d
x1 x2 x3
sex
1 1 0.1 11
male
2 2 0.2 12 female
3 3 0.3 13
male
4 4 0.4 14 female
> subset(d, sex==’male’)
x1 x2 x3 sex
1 1 0.1 11 male
3 3 0.3 13 male
> subset(d, sex==’male’ & x2>0.2)
x1 x2 x3 sex
3 3 0.3 13 male
> subset(d, x1>1, select=-x1)
x2 x3
sex
2 0.2 12 female
3 0.3 13
male
control Library system:C# TIFF: Learn to Convert MS Word, Excel, and PPT to TIFF Image
C# TIFF - Conversion from Word, Excel, PPT to TIFF. In order to convert Microsoft Word, Excel, and PowerPoint to quiet easy to integrate this SDK into your C#
www.rasteredge.com
control Library system:VB.NET PowerPoint: Process & Manipulate PPT (.pptx) Slide(s)
to split one PPT (.pptx) document file into smaller sub control add-on can do PPT creating, loading powerful & profession imaging controls, PDF document, image
www.rasteredge.com
CHAPTER8. OPERATINGINS
77
4 0.4 14 female
> subset(d, select=c(x1,sex))
x1
sex
1 1
male
2 2 female
3 3
male
4 4 female
> subset(d, x2<0.3, select=x2:sex)
x2 x3
sex
1 0.1 11
male
2 0.2 12 female
> subset(d, x2<0.3, -(x3:sex))
x1 x2
1 1 0.1
2 2 0.2
> attach(subset(d, sex==’male’ & x3==11, x1:x3))
8.3 Adding and Deleting Variables from a Data Frame
AH4.1.3
·
Done without
attach
ing the data frame by setting element to
NULL
df$x1 ← 1:20
# add completely new variable
df$x1 ← df$x2+df$x3
# add new variable computed on old ones
df$x4 ← NULL
# remove x4 from data frame
df[c(’x5’,’x6’)] ← NULL # remove two variables
·
Use the
rm
or
remove
command to remove data frames,notto remove vari-
ables within data frames
8.4
upData
Function for Updating Data Frames
AH4.1.5
·
Good way to modify data frame without repeating
dataframe$
prefix every-
where and without attaching
control Library system:VB.NET PowerPoint: Read & Scan Barcode Image from PPT Slide
VB.NET PPT PDF-417 barcode scanning SDK to detect PDF-417 barcode Allow VB.NET developers to output PPT ISSN barcode scanning result into data string.
www.rasteredge.com
control Library system:C# PDF Convert: How to Convert MS PPT to Adobe PDF Document
VB.NET Read: PDF Text Extract; VB.NET Read: PDF Image Extract; VB.NET Write: Insert text into PDF; C# PDF Convert: How to Convert MS PPT to Adobe PDF Document.
www.rasteredge.com
CHAPTER8. OPERATINGINS
78
·
General form is
dfnew ← upData(dfold, new variables=values,
# create or recompute vars
rename=c(oldname=’newname’,oldname=’newname’), #rename vars
drop=c(’oldname1’,’oldname2’),
#remove vars
labels=c(name1=’label1’,name2=’label2’),
#give labels
levels=list(name1=list(newlevel1=’oldlevel’,
newlevel2=c(’oldlev1’,’oldlev2’))))
·
Above example lists two variables but you can list any number
b
·
To give an element a name (e.g., for
rename,labels
), you use the notation
c(name1=’string1’,name2=’string2’)
;you must do this to give names to
scalars (e.g.,
c(name=’value’)
).
To specify a scalar that is unnamed, just use e.g.
drop=’oldname’
Note: Atpresent,
labels
must specify a list. In the future
upData
will be
modified to allow either a list or a vector.
·
You can also create any number of new variables or redefine any number of
old ones
·
label
sare attributes that are added to variables to define long names for
variables; these needn’t be legal S names
label
sare used to annotate output when using Hmisc or Design libraries
label
sare printed by the
describe
and
contents
functions and are used
as axis labels for some high-level plotting functions in Hmisc
– Youcanfetchlabelsinsidecommandsusinge.g.
label(age)
;set labels
outside
upData
using e.g.
label(sbp)←’Systolic Blood Pressure’
label
sare automatically transferred from SAS datasets imported using
sas.get
b
The
newlevel2
partoftheexampleshowshowtocollapsemultipleoldcategoriesintoasinglecategoryfora
factor
variable.
CHAPTER8. OPERATINGINS
79
·
You can write over the modified data frame with the updated data frame
using e.g.
mydf ← upData(mydf, ...)
or you can store the modified data under a new name (possibly to be re-
named later to the old name after you are sure everything worked)
·
Example:
> dat ← data.frame(a=(1:3)/7, y=c(’a’,’b1’,’b2’), z=1:3)
> dat
a y z
1 0.1428571 a 1
2 0.2857143 b1 2
3 0.4285714 b2 3
> dat ← upData(dat, w=A+z, rename=c(a=’A’), drop=’z’,
+ labels=c(A=’Label for A’, y=’Test Label’),
+ levels=list(y=list(a=’a’,b=c(’b1’,’b2’))))
Input object size:
662 bytes; 3 variables
Renamed variable
a to A
Added variable
w
Dropped variable
z
New object size:
834 bytes; 3 variables
> dat
A y
w
1 0.1428571 a 1.142857
2 0.2857143 b 2.285714
3 0.4285714 b 3.428571
8.5 Manipulating and Summarizing Data
AH4.2.1-2,KO7.1,PG3
8.5.1 Sorting Data
·
sort
function will sort a vector into ascending order
·
order
is used to sort a matrix, vector, or data frame so that its rows are in
the order given by another variable
CHAPTER8. OPERATINGINS
80
i ← order(df$state, -df$median.income) # descending order
df[i,]
# print ordered data frame
8.5.2 By Processing
·
By processing
Aggregate statistics
stratified estimates; statistics com-
puted after cross-classifying data
·
Use
tapply
for most basic by processing
> y ← 1:8
> sex ← c(rep(’male’,4),rep(’female’,4))
> treat ← rep(c(’A’,’B’),4)
> sex
[1] "male"
"male"
"male"
"male"
"female" "female" "female" "female"
> treat
[1] "A" "B" "A" "B" "A" "B" "A" "B"
> tapply(y, sex, mean)
female male
6.5 2.5
> tapply(y, treat, mean)
A B
4 5
> tapply(y, list(sex,treat), mean)
A B
female 6 7
male 2 3
·
Arguments, in order, are vector to analyze, vector or list of stratification vari-
ables, and function to compute for each stratum
·
If data contain any
NA
s, add extra 4th argument
na.rm=T
in many cases
·
by
function can run more complex analyses in groups
> by(y, llist(sex), FUN=describe, descript=’y’)
sex:female
CHAPTER8. OPERATINGINS
81
y
1 Variables
4 Observations
---------------------------------------------------------------------------
x
n missing unique Mean
4 0
4
6.5
5 (1, 25%), 6 (1, 25%), 7 (1, 25%), 8 (1, 25%)
---------------------------------------------------------------------------
sex:male
y
1 Variables
4 Observations
---------------------------------------------------------------------------
x
n missing unique Mean
4 0
4
2.5
1 (1, 25%), 2 (1, 25%), 3 (1, 25%), 4 (1, 25%)
---------------------------------------------------------------------------
llist
is a function in Hmisc that makes the
list
function remember names
of variables, so in this case
llist(sex)
is the same as
list(sex=sex)
;
by
requires a list if you want to label the stratifying variable
·
The
FUN
argument to
by
tells it which function to run on subsets of data
frames
In this example,
descript
is an argument expected by
describe
·
The
aggregate
function in S can summarize many response variables but
the summarization function must return a scalar
8.6 Data Manipulation and Management
AH4.2.4
·
Many functions available
CHAPTER8. OPERATINGINS
82
·
abbreviate
is frequently used
·
cut2
in Hmisc is used to create a categorical representation of a numeric
continuous variable
cut2(x,c(10,20,30))
uses cut points 10,20,30
cut2(x,g=5)
creates quintile groups
cut2(x,m=20)
finds cutpoints to get 20 observations per interval
> set.seed(1)
> table(cut2(runif(1000), g=4))
[0.00109,0.240) [0.24008,0.496) [0.49646,0.760) [0.76006,0.999]
250
250
249
251
·
Very seldom do you need to store the result of
cut2
in a object with a name
·
Example: compute mean blood pressure by quartiles of
age
:
tapply(bp,
cut2(age,g=4), na.rm=T)
·
expand.grid
is very useful for creating systematic data; can save much data
entry time
> dframe ← expand.grid(age=30:34, sex=c(’female’,’male’))
> dframe
age
sex
1 30 female
2 31 female
3 32 female
4 33 female
5 34 female
6 30
male
7 31
male
8 32
male
9 33
male
10 34
male
Documents you may be interested
Documents you may be interested