gpt4 book ai didi

r - 粘贴到tidyverse的select()中

转载 作者:行者123 更新时间:2023-12-04 06:00:34 24 4
gpt4 key购买 nike

我正在处理的数据集如下所示

a   b     vara_1 vara_2 vara_3 vara_4 vara_5 .... varb_1 varb_2 varb_3 varb_4
-----------------------------------------------------------------------------
100 120 a b c d e w x y z


我想根据 paste0函数生成的特定顺序更改数据集的列顺序:

> paste0(c("vara_", "varb_"),rep(1:10, each=2))
[1] "vara_1" "varb_1" "vara_2" "varb_2" "vara_3" "varb_3" "vara_4" "varb_4" "vara_5" "varb_5"
[11] "vara_6" "varb_6" "vara_7" "varb_7" "vara_8" "varb_8" "vara_9" "varb_9" "vara_10" "varb_10"


因此数据集的最终外观将变为

a   b     vara_1 varb_1 vara_2 varb_2 vara_3 varb_3 ....
-----------------------------------------------------------------------------
100 120 a w b x c y ....


无论如何,可以将其转换为tidyverse的 select()函数可读的格式吗?

我努力了

condition <- paste0(c("vara_", "varb_"),rep(1:10, each=2)
data <- data %>% select(a, b, condition)


而且 data <- data %>% noquote(select(a, b, condition))也没有运气。

列出 select()的所有变量/列顺序的方法是否可行?任何帮助或实现同一目标的替代方式,不胜感激!

最佳答案

您应该使用select_at而不是select

数据

df <- data.frame(a=100, b=120, vara_1="a", vara_2 = "b", vara_3 = "c",
varb_1 = "d", varb_2 = "e", varb_3 = "f")

# a b vara_1 vara_2 vara_3 varb_1 varb_2 varb_3
# 1 100 120 a b c d e f


指定列

thesecols <- c("a", "b", paste0(c("vara_", "varb_"),rep(1:3, each=2)))


使用 select_at

library(dplyr)
df %>%
select_at(vars(thesecols))

# a b vara_1 varb_1 vara_2 varb_2 vara_3 varb_3
# 1 100 120 a d b e c f

关于r - 粘贴到tidyverse的select()中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47447105/

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