gpt4 book ai didi

r - 如何使用带有 dplyr 的列索引对选定列进行行求和?

转载 作者:行者123 更新时间:2023-12-04 16:59:34 25 4
gpt4 key购买 nike

dplyr ,如何对选定的列执行行式求和(使用列索引)?

这不起作用

> 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

我可以做以下,但它不漂亮
> 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
.. ... ... ... ... ... ...

有没有在语法上更好的方法来实现这一目标?

编辑:它与其他问题不同,因为我想对使用列索引选择的列进行逐行操作”

最佳答案

正如评论中已经说过的,您可以通过以下方式完成您的任务:

iris %>% mutate(sum=Reduce("+",.[1:4]))

在这种情况下也是基 rowSums作品:
iris$sum<-rowSums(iris[,1:4])

关于r - 如何使用带有 dplyr 的列索引对选定列进行行求和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31193101/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com