In many survey systems, sub-questions take the form "Q1_a", "Q1_b", with the main question and sub-question separated by an underscore. This function conveniently returns column index of matches found for a question id in a surveydata object. It does this by using the pattern attribute of the surveydata object.

which.q(x, Q, ptn = pattern(x))

## Arguments

x Object to coerce to surveydata Character string with question number, e.g. "Q2" A list with two elements, sep and exclude. See pattern() and which.q() for more detail.

questions() to return all questions matching the pattern()

Other Question functions: question_text_common(), question_text_unique(), question_text(), questions(), split_common_unique()

## Examples

# Basic operations on a surveydata object, illustrated with the example dataset membersurvey

class(membersurvey)
#> [1] "surveydata" "data.frame"
questions(membersurvey)
#>  [1] "id"        "Q1"        "Q2"        "Q3"        "Q4"        "Q5"
#>  [7] "Q6"        "Q7"        "Q8"        "Q9"        "Q10"       "Q11"
#> [13] "Q11_other" "Q12"       "Q13"       "Q14"       "Q15"       "Q19"
#> [19] "Q20"       "Q20_other" "Q21"       "Q23"       "Q23_other" "Q24"
#> [25] "Q25"       "Q26"       "Q27"       "Q30"       "Q30_other" "Q31"
#> [31] "Q31_other" "Q32"       "Q33"       "Q35"       "weight"    "size"
which.q(membersurvey, "Q1")
#> [1] 2 3which.q(membersurvey, "Q3")
#>  [1]  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19which.q(membersurvey, c("Q1", "Q3"))
#>  [1]  2  3  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19
question_text(membersurvey, "Q3")
#>  [1] "[Carry out ad hoc qualitative projects] With regard to your market research work, which of these do you do at all?"
#>  [2] "[Carry out ad hoc quantitative projects] With regard to your market research work, which of these do you do at all?"
#>  [3] "[Design ad hoc projects but don't personally carry them out] With regard to your market research work, which of these do you do at all?"
#>  [4] "[Design/advise on research programmes as a whole] With regard to your market research work, which of these do you do at all?"
#>  [5] "[Provide project management] With regard to your market research work, which of these do you do at all?"
#>  [6] "[Summarise previous research] With regard to your market research work, which of these do you do at all?"
#>  [7] "[Carry out desk research] With regard to your market research work, which of these do you do at all?"
#>  [8] "[Provide modelling/ statistical services] With regard to your market research work, which of these do you do at all?"
#>  [9] "[Provide consultancy on other specific aspects of research] With regard to your market research work, which of these do you do at all?"
#> [10] "[Provide field services] With regard to your market research work, which of these do you do at all?"
#> [11] "[Provide data processing services] With regard to your market research work, which of these do you do at all?"
#> [12] "[Provide other part project services (interviewing, moderating, report writing)] With regard to your market research work, which of these do you do at all?"
#> [13] "[Lecture/teach] With regard to your market research work, which of these do you do at all?"
#> [14] "[Provide training services] With regard to your market research work, which of these do you do at all?"
#> [15] "[Interim management] With regard to your market research work, which of these do you do at all?"                                                            question_text_unique(membersurvey, "Q3")
#>  [1] "Carry out ad hoc qualitative projects"
#>  [2] "Carry out ad hoc quantitative projects"
#>  [3] "Design ad hoc projects but don't personally carry them out"
#>  [4] "Design/advise on research programmes as a whole"
#>  [5] "Provide project management"
#>  [6] "Summarise previous research"
#>  [7] "Carry out desk research"
#>  [8] "Provide modelling/ statistical services"
#>  [9] "Provide consultancy on other specific aspects of research"
#> [10] "Provide field services"
#> [11] "Provide data processing services"
#> [12] "Provide other part project services (interviewing, moderating, report writing)"
#> [13] "Lecture/teach"
#> [14] "Provide training services"
#> [15] "Interim management"                                                            question_text_common(membersurvey, "Q3")
#> [1] "With regard to your market research work, which of these do you do at all?"
# Extracting columns from a surveydata object

#>   Q1_1 Q1_2
#> 1    8    2
#> 2   35   12
#> 3   34   12
#> 4   20    9
#> 5   20    3
#>   Q1_1 Q1_2
#> 1    8    2
#> 2   35   12
#> 3   34   12
#> 4   20    9
#> 5   20    3
#>   Q3_1 Q3_2 Q3_3 Q3_4 Q3_5 Q3_6 Q3_7 Q3_8 Q3_9 Q3_10 Q3_11 Q3_12 Q3_13 Q3_14
#> 1   No   No   No   No   No   No   No   No   No   Yes    No    No    No    No
#> 2  Yes   No   No   No   No   No   No   No  Yes    No    No   Yes    No    No
#> 3  Yes  Yes   No   No   No  Yes   No   No   No    No    No    No    No    No
#> 4   No   No   No   No   No   No   No   No   No    No   Yes    No    No    No
#> 5   No   No   No   No   No   No   No   No   No    No    No    No    No   Yes
#> 6   No  Yes   No   No   No   No   No   No  Yes    No    No    No    No    No
#>   Q3_15
#> 1    No
#> 2    No
#> 3    No
#> 4    No
#> 5    No
#>   Q1_1 Q1_2 Q3_1 Q3_2 Q3_3 Q3_4 Q3_5 Q3_6 Q3_7 Q3_8 Q3_9 Q3_10 Q3_11 Q3_12
#> 1    8    2   No   No   No   No   No   No   No   No   No   Yes    No    No
#> 2   35   12  Yes   No   No   No   No   No   No   No  Yes    No    No   Yes
#> 3   34   12  Yes  Yes   No   No   No  Yes   No   No   No    No    No    No
#> 4   20    9   No   No   No   No   No   No   No   No   No    No   Yes    No
#> 5   20    3   No   No   No   No   No   No   No   No   No    No    No    No
#> 6   36   20   No  Yes   No   No   No   No   No   No  Yes    No    No    No
#>   Q3_13 Q3_14 Q3_15
#> 1    No    No    No
#> 2    No    No    No
#> 3    No    No    No
#> 4    No    No    No
#> 5    No   Yes    No
#> 6    No    No    No
# Note that the result is always a surveydata object, even if only one column is extracted

#>  $id: num 3 5 6 11 13 15 21 22 23 25 ... #> - attr(*, "variable.labels")= Named chr "id" #> ..- attr(*, "names")= chr "id" #> - attr(*, "pattern")=List of 2 #> ..$ sep    : chr "_"