Trong dplyr
, làm thế nào để bạn thực hiện tổng kết hàng nghìn cột đã chọn (sử dụng chỉ mục cột)?Làm thế nào để thực hiện tổng kết hàng tuần trên các cột được chọn bằng cách sử dụng chỉ mục cột với dplyr?
này không hoạt động
> 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
tôi có thể làm những điều sau đây, nhưng nó không đẹp
> 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ó cú pháp nhiều cách đẹp hơn để đạt được điều này?
EDIT: Đó là khác biệt so với các câu hỏi khác, bởi vì tôi muốn thực hiện hành động rowwise trên cột bằng sử dụng chỉ số cột "
Thử 'iris%>% mutate (sum = Reduce (" + ",. [1: 4]))'. Ngoài ra, hàm 'rowSums' cơ sở làm những gì bạn đang yêu cầu. – nicola
có thể trùng lặp của [Áp dụng hàm cho mỗi hàng của bảng bằng dplyr?] (Http://stackoverflow.com/questions/21818181/applying-a-function-to-every-row-of-a-table-using -dplyr) – jeremycg
'dplyr' cung cấp hàm' rowwise' có thể hữu ích. – SabDeM