gpt4 book ai didi

r - 使用 dplyr 按名称省略列来计算行总和

转载 作者:行者123 更新时间:2023-12-05 00:54:42 24 4
gpt4 key购买 nike

使用 dplyr,我想计算除一列之外的所有列的行总和。
我设法通过使用列索引来做到这一点。
然而,我想使用列名而不是列索引 .
我怎样才能做到这一点?

示例数据:

# Using dplyr 0.5.0
library(tidyverse)

# Create example data
`UrbanRural` <- c("rural", "urban")
type1 <- c(1582, 671)
type2 <- c(5247, 4123)
type3 <- c(87, 65)
df <- data.frame(`UrbanRural`, type1, type2, type3)
df <- tbl_df(df)
# A tibble: 2 x 5
UrbanRural type1 type2 type3 tot
<fctr> <dbl> <dbl> <dbl> <dbl>
1 rural 1582 5247 87 6916
2 urban 671 4123 65 4859

有效的示例(使用列索引):
df %>% mutate(tot = rowSums(.[-1]))
# A tibble: 2 x 5
UrbanRural type1 type2 type3 tot
<fctr> <dbl> <dbl> <dbl> <dbl>
1 rural 1582 5247 87 6916
2 urban 671 4123 65 4859

我想做的例子:
df %>% mutate(tot = rowSums(select(., -UrbanRural)))

最佳答案

我们可以使用 setdiff选择“UrbanRural”以外的列

df %>%
mutate(tot = rowSums(.[setdiff(names(.), "UrbanRural")]))
# UrbanRural type1 type2 type3 tot
# <fctr> <dbl> <dbl> <dbl> <dbl>
#1 rural 1582 5247 87 6916
#2 urban 671 4123 65 4859

如果我们想使用 select
df %>% 
select(-one_of("UrbanRural")) %>%
rowSums() %>%
cbind(df, tot = .)
# UrbanRural type1 type2 type3 tot
# 1 rural 1582 5247 87 6916
# 2 urban 671 4123 65 4859

关于r - 使用 dplyr 按名称省略列来计算行总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39598258/

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