In dplyr
, come si esegue la sommatoria rowwise sulle colonne selezionate (utilizzando l'indice delle colonne)?Come eseguire la sommatoria rowwise sulle colonne selezionate usando l'indice delle colonne con dplyr?
Questo non funziona
> iris %>% mutate(sum=sum(.[1:4])) %>% head
Sepal.Length Sepal.Width Petal.Length Petal.Width Species sum
1 5.1 3.5 1.4 0.2 setosa 2078.7
2 4.9 3.0 1.4 0.2 setosa 2078.7
3 4.7 3.2 1.3 0.2 setosa 2078.7
4 4.6 3.1 1.5 0.2 setosa 2078.7
5 5.0 3.6 1.4 0.2 setosa 2078.7
6 5.4 3.9 1.7 0.4 setosa 2078.7
posso fare quanto segue, ma non è bello
> iris %>% mutate(index=1:n()) %>%
gather("param", "value", 1:4) %>%
group_by(index) %>%
mutate(sum=sum(value)) %>%
spread(param, value) %>% select(-index)
Source: local data frame [150 x 6]
Species sum Sepal.Length Sepal.Width Petal.Length Petal.Width
1 setosa 10.2 5.1 3.5 1.4 0.2
2 setosa 9.5 4.9 3.0 1.4 0.2
3 setosa 9.4 4.7 3.2 1.3 0.2
4 setosa 9.4 4.6 3.1 1.5 0.2
5 setosa 10.2 5.0 3.6 1.4 0.2
6 setosa 11.4 5.4 3.9 1.7 0.4
7 setosa 9.7 4.6 3.4 1.4 0.3
8 setosa 10.1 5.0 3.4 1.5 0.2
9 setosa 8.9 4.4 2.9 1.4 0.2
10 setosa 9.6 4.9 3.1 1.5 0.1
.. ... ... ... ... ... ...
C'è più sintatticamente modo più bello per raggiungere questo obiettivo?
EDIT: E 'diverso da altre questioni, perché voglio fare il funzionamento rowwise sulle colonne selezionate da indici colonna utilizzando "
Prova 'iris%>% mutate (sum = Reduce (" + ",. [1: 4]))'. In alternativa, la funzione 'rowSums' di base fa quello che stai chiedendo. – nicola
possibile duplicato di [Applicazione di una funzione a ogni riga di una tabella utilizzando dplyr?] (Http://stackoverflow.com/questions/21818181/applying-a-function-to-every-row-of-a-table-using -dplyr) – jeremycg
'dplyr' offre la funzione' rowwise' che potrebbe essere utile. – SabDeM