gpt4 book ai didi

r - 使用 ends_with 帮助器和字符串名称向量选择列

转载 作者:行者123 更新时间:2023-12-01 11:17:03 25 4
gpt4 key购买 nike

我有一个宽格式的数据框,每一列代表一个问卷项目,用于一个特定版本的问卷,用于特定时间点(重复测量设计)。

我的数据如下所示:

df <- data.frame(id = c(1:5), t1_QOL_child_Q1 = c(5, 3, 6, 2, 7), t1_QOL_child_Q2 = c(5, 2, 3, 7, 1), t1_QOL_child_Q3 = c(7, 7, 6, 2, 5), t1_QOL_child_joy = c(9,9, 5, 3, 6), t1_QOL_teen_Q1 = c(5, 3, 6, 2, 7), t1_QOL_teen_Q2 = c(5, 2, 3, 7, 1), t1_QOL_teen_Q3 = c(7, 7, 6, 2, 5), t1_QOL_teen_joy = c(5, 7, 4, 7, 9), t1_QOL_adult_Q1 = c(5, 3, 6, 2, 7), t1_QOL_adult_Q2 = c(5, 2, 3, 7, 1), t1_QOL_adult_Q3 = c(7, 7, 6, 2, 5), t1_QOL_adult_joy = c(6, 5, 3, 3, 2), t2_QOL_child_Q1 = c(5, 3, 6, 2, 7), t2_QOL_child_Q2 = c(5, 2, 3, 7, 1), t2_QOL_child_Q3 = c(7, 7, 6, 2, 5), t2_QOL_child_joy = c(9,9, 5, 3, 6), t2_QOL_teen_Q1 = c(5, 3, 6, 2, 7), t2_QOL_teen_Q2 = c(5, 2, 3, 7, 1), t2_QOL_teen_Q3 = c(7, 7, 6, 2, 5), t2_QOL_teen_joy = c(5, 7, 4, 7, 9), t2_QOL_adult_Q1 = c(5, 3, 6, 2, 7), t2_QOL_adult_Q2 = c(5, 2, 3, 7, 1), t2_QOL_adult_Q3 = c(7, 7, 6, 2, 5), t2_QOL_adult_joy = c(6, 5, 3, 3, 2))

例如,列 t1_QOL_child_Q1 表示 child 版本( child )生活质量 (QOL) 问卷的问题 1 (Q1),具有时间点 1 (t1) 数据。

我只想选择后缀标记不同的分量表/列。在上面的示例数据中,它将是以“joy”结尾的列。

我有超过 3000 列和更多后缀,使用以下内容会很痛苦:

select(df, ends_with("joy"), ends_with(<another suffix>), ends_with(<another suffix>))

我曾想过将所有可能的后缀放在一个字符串向量中,并将该向量用作 ends_with 函数的输入,但 ends_with 只能采用单个字符串而不是字符串向量。

我在 Stackoverflow 上搜索并找到了 solution可以容纳一个小的字符串向量,如下所示:

select(df, sapply(vector_of_strings, starts_with))

但是,我的字符串向量中有太多后缀,并由此产生了以下错误消息:错误:sapply(vector_of_strings, ends_with) must resolve to integer column positions, not a list

感谢帮助。谢谢!

最佳答案

我们可以使用单个匹配和由|分隔的多个模式来匹配字符串末尾($)的子字符串

df %>% 
select(matches("(joy|Q2)$"))

关于r - 使用 ends_with 帮助器和字符串名称向量选择列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49358833/

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