On Jun 23, 2009, at 1:18 PM, Russell Ivory wrote:
I have a data set called datastep4 with 211484 rows and 95 columns
WHY ALL OF THE UNNEEDED EMPTY LINES???
dim(datastep4)
[1] 211484 95
The first few column names are given below, note the first one is
"RESPONDED"
names(datastep4)[1:5]
[1] "RESPONDED" "VAR_30" "VAR_31" "VAR_32" "VAR_33"
A table of RESPONDED shows mostly zeros
table(datastep4$RESPONDED)
0 1
210582 902
I reduce the data set by pulling out the RESPONDED column, then verify
all is well
test <- datastep4[,-datastep4$RESPONDED]
It may have "worked" but perhaps not for the reasons you thought it
should. Take a look carefully at this
> str(data2)
'data.frame': 300 obs. of 5 variables:
$ x1 : num 0.0592 0.3976 0.9512 0.675 0.7129 ...
$ x2 : num 0.625 0.328 0.721 0.779 0.233 ...
$ y : num 0.685 0.694 1.589 1.461 0.921 ...
$ grp: Factor w/ 3 levels "A","B","C": 1 1 1 1 1 1 1 1 1 1 ...
$ one: num 1 1 1 1 1 1 1 1 1 1 ...
> str(data2[,-data2$one])
'data.frame': 300 obs. of 4 variables:
$ x2 : num 0.625 0.328 0.721 0.779 0.233 ...
$ y : num 0.685 0.694 1.589 1.461 0.921 ...
$ grp: Factor w/ 3 levels "A","B","C": 1 1 1 1 1 1 1 1 1 1 ...
$ one: num 1 1 1 1 1 1 1 1 1 1 ...
Notice that the "one" column was _not_ removed.
dim(test)
[1] 211484 94
names(test)[1:5]
[1] "VAR_30" "VAR_31" "VAR_32" "VAR_33" "VAR_34"
class(test)
[1] "data.frame"
test[1:10,1:10]
VAR_30 VAR_31 VAR_32 VAR_33 VAR_34 VAR_37 VAR_38 VAR_42 VAR_45
VAR_46
1 0 0 0 0 15198 0 0 6 NA
3 0 0 0 0 8491 0 0 4 NA
4 0 0 0 0 0 0 0 0 NA
5 0 0 0 0 67671 0 0 7 NA
7 0 0 0 0 1334 0 0 1 NA
9 0 0 0 0 0 0 0 2 NA
10 0 0 0 0 24169 0 0 10 NA
11 0 0 0 0 438 0 0 3 NA
12 0 0 0 0 2158 0 0 1 NA
13 0 0 0 0 18804 0 0 4 NA
If I reduce the data frame datastep4 by removing a few records where
the
variable G102 is not 1, and removing the column named "G102" (which is
column 84),
I end up with a smaller set called datastep5 with 192701 rows and 94
columns
datastep5 <- datastep4[datastep4$G102 != 1,-84]
This code does the _opposite_ of what you stated. It selects only
those records that are not equal to 1. (And if that is not an integer
type column the results could be further seen as undetermined,)
dim(datastep5)
[1] 192701 94
names(datastep5)[1:5]
[1] "RESPONDED" "VAR_30" "VAR_31" "VAR_32" "VAR_33"
table(datastep5$RESPONDED)
0 1
141096 584
Now, if I want to reduce this data set by removing the RESPONDED
column
as was done for datastep4, it blows up
test <- datastep5[,-datastep5$RESPONDED]
I am guessing that the first element of datastep5$RESPONDED is now a
zero. You are abusing the indexing conventions. Try instead either:
test <- datastep5[,-1]
Or if you want to imagine that you cannot remember the column number
of "RESPONDED" then this will "work":
test <- datastep5[ , -which(names(datastep5)=="RESPONDED")]
Error in .subset(x, j) : only 0's may be mixed with negative
subscripts
Merrick Bank confidentiality trailed elided
David Winsemius, MD
Heritage Laboratories
West Hartford, CT
______________________________________________
R-help@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.