gpt4 book ai didi

r - 省略列而不是将它们放在 purrr 中

转载 作者:行者123 更新时间:2023-12-04 11:08:38 24 4
gpt4 key购买 nike

我需要计算多个列表的索引。但是,如果我删除一些列(此处由“w”和“x”表示),我只能这样做。例如。

library(tidyverse)
lists<- list(
l1=tribble(
~w, ~x, ~y, ~z,
#--|--|--|----
12, "a", 2, 1,
12, "a",5, 3,
12, "a",6, 2),

l2=tribble(
~w, ~x, ~y, ~z,
#--|--|--|----
13,"b", 5, 7,
13,"b", 4, 6,
13,"b", 3, 2))
lists %>% 
map(~ .x %>%
#group_by(w,x) %>%
select(-w,-x) %>%
mutate(row_sums = rowSums(.)))

我不想删除这些列,而是希望保留/省略它们并仅为“y”和“z”计算索引。

我设法通过首先提取这些列然后再次绑定(bind)它们来做到这一点。例如。

select.col<-lists %>% 
map_dfr(~ .x %>%
select(w,x))

lists %>%
map_dfr(~ .x %>%
select(-w,-x) %>%
mutate(row_sums = rowSums(.))) %>%
bind_cols(select.col)

但是,这不是那么优雅,我必须绑定(bind)列表 (map_dfr),不过我想将它们保留为列表。

可能,另一种方法是使用 select_if(., is.numeric),但由于我需要省略一些数字列,所以我不确定这是否是最佳选择.

我确信这个问题有一个简单的解决方案。谁能看一下?

最佳答案

您可以选择要计算总和的列,而不是删除列。

可以按名字选择

library(dplyr)
library(purrr)

lists %>% map(~ .x %>% mutate(row_sums = rowSums(.[c("y", "z")])))


#$l1
# A tibble: 3 x 5
# w x y z row_sums
# <dbl> <chr> <dbl> <dbl> <dbl>
#1 12 a 2 1 3
#2 12 a 5 3 8
#3 12 a 6 2 8

#$l2
# A tibble: 3 x 5
# w x y z row_sums
# <dbl> <chr> <dbl> <dbl> <dbl>
#1 13 b 5 7 12
#2 13 b 4 6 10
#3 13 b 3 2 5

或者也可以按列的位置

lists %>% map(~ .x %>%  mutate(row_sums = rowSums(.[3:4])))

关于r - 省略列而不是将它们放在 purrr 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56475079/

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