簡體   English   中英

使用ends_with helper和字符串名稱向量選擇列

[英]Selecting columns using ends_with helper and a vector of string names

我有一個寬格式的數據框,每列代表一個問卷項目 ,用於特定時間點的一個特定版本的問卷(重復測量設計)。

我的數據看起來如下所示:

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將表示生活質量(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上搜索並找到了一個可以容納一小串字符串的解決方案 ,如下所示:

select(df, sapply(vector_of_strings, starts_with))

但是,我的字符串向量中有太多后綴,並且由此產生以下錯誤消息:錯誤: sapply(vector_of_strings, ends_with)必須解析為整數列位置,而不是列表

幫助贊賞。 謝謝!

我們可以使用由|分隔的多個模式的單個matches 匹配字符串末尾的子串( $

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM