W dplyr
, w jaki sposób wykonać sumowanie w wierszach w stosunku do wybranych kolumn (używając indeksu kolumny)?Jak wykonać sumowanie rzędów w wybranych kolumnach przy użyciu indeksu kolumny z dplyr?
To nie działa
> 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
mogę wykonać następujące czynności, ale to nie jest piękne
> 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
.. ... ... ... ... ... ...
Czy istnieje bardziej składniowo ładniejszy sposobem osiągnięcia tego celu?
EDIT: To różni się od innych pytań, bo chcę zrobić rowwise operacji na kolumnach wybranych przez wykorzystaniem indeksów kolumn "
Spróbuj 'iris%>% mutate (sum = Reduce (" + ",. [1: 4]))'. Alternatywnie, podstawowa funkcja 'rowSums' spełnia to, o co prosisz. – nicola
możliwy duplikat [Zastosowanie funkcji do każdego wiersza tabeli przy użyciu dplyr?] (Http://stackoverflow.com/questions/21818181/applying-a-function-to-every-row-of-a-table-using -dplyr) – jeremycg
'dplyr' oferuje funkcję' rowwise', która może być pomocna. – SabDeM