2012-11-05 5 views
1

J'ai quelque chose comme ceci:Somme des colonnes avec une colonne comme un type chr

Date  Point1 Point2 Point3 
01-03-2000  23  57 98 
02-03-2000  67  36 77 
03-03-2000  67  25 47 
... 

Je veux obtenir la somme de chaque colonne avec une fonction comme colSums, mais ma première colonne, il est pas numérique, est un type de caractère. Comment puis-je obtenir la somme?

Répondre

5

Si dat est votre trame de données, vous pouvez essayer

colSums(dat[ , -1]) 

Ceci renvoie la somme de chaque colonne, sauf la première (celle avec les dates).

4

Une solution plus généralisable:

# set up some fake data with text and numeric columns 
numchr <- list(1:3,letters[1:3]) 
test <- data.frame(numchr[sample(1:2,10,replace=TRUE)]) 
names(test) <- letters[1:10] 

# which looks like... 
> test 
    a b c d e f g h i j 
1 1 a a a a 1 a 1 1 a 
2 2 b b b b 2 b 2 2 b 
3 3 c c c c 3 c 3 3 c 

# get the sums only for the numeric columns 
colSums(test[sapply(test,is.numeric)]) 

a f h i 
6 6 6 6 
1

Une autre possibilité (en utilisant l'exemple de @ thelatemail):

library(plyr) 
numcolwise(sum)(test) 
Questions connexes