On Feb 19, 2010, at 1:36 AM, K. Elo wrote:

Dear Anna,

19.02.2010 08:17, Anna Carter wrote:
(1) If the dataset contains some variables having all the entries = 0
and while analysing I want to delete those pericular columns, how do
acheive this. i.e.

Let's suppose 'df' is your data frame, then:

subset(df, select=which(colSums(df)!=0))

should do the work :)

It would not work if there were paired negative and positive values or any collection that summed to zero.

> dataset1 <-
structure(list(sr_no = 1:4, var1 = c(5L, 3L, 4L, 11L), var2 = c(0,
0, 1, -1), var3 = c(3L, 2L, 4L, 1L), var4 = c(1L, 9L, 7L, 6L),
    var5 = c(0L, 0L, 0L, 0L)), .Names = c("sr_no", "var1", "var2",
"var3", "var4", "var5"), row.names = c(NA, -4L), class = "data.frame")

Perhaps:
> idx <- vector()
> for (x in seq_along(names(dataset1))) if (all(dataset1[, x] == 0)) { } else{ idx<- c(idx, x)}

> dataset1[, idx]
  sr_no var1 var2 var3 var4
1     1    5    0    3    1
2     2    3    0    2    9
3     3    4    1    4    7
4     4   11   -1    1    6

Or a modification to Kimmo Elo's code which would still "break" if any columns were character:

> subset(dataset1, select=which(colSums(abs(dataset1))!=0))
  sr_no var1 var2 var3 var4
1     1    5    0    3    1
2     2    3    0    2    9
3     3    4    1    4    7
4     4   11   -1    1    6


HTH,
Kimmo


--
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.

Reply via email to