scoreFACTG: Score the FACT-G

Description Usage Arguments Details Value Note References See Also Examples


Generates all of the scores of the Functional Assessment of Cancer Therapy-General (FACT-G) from item responses.


scoreFACTG(df, id = NULL, updateItems = FALSE, keepNvalid = FALSE)



A data frame with the questionnaire items, appropriately-named.


(optional) The quoted name of a variable in df with a unique value for each row of df. If an id variable is provided here, it will also be included with the scale scores in the output data frame. This can facilitate accurate merging of the scale scores back into the input df.


(optional) Logical, if TRUE then updated versions of the items (i.e., re-coded for score calculation) will be returned in the output data frame with the scale scores. The default, FALSE, does not save any updated versions of the items in the resulting data frame. Most users will want to omit this argument or, equivalently, set it to FALSE.


(optional) Logical, if TRUE then the output data frame will have additional variables containing the number of valid, non-missing responses from each respondent to the items on a given scale (see Details). If FALSE (the default), these variables will not be in the returned data frame. Most users will want to omit this argument or, equivalently, set it to FALSE.


Given a data frame that includes all of the FACT-G items as variables, appropriately named, this function generates all of the FACT-G scale scores. It is crucial that the item variables in the supplied data frame are named according to FACT conventions. For example, the first physical well-being item should be named GP1, the second GP2, and so on. Please refer to the materials provided by for the particular questionnaire you are using. In particular, refer to the left margin of the official questionnaire (i.e., from for the appropriate item variable names.

Most users will want to omit the updateItems and keepNvalid arguments or, equivalently, set them both to FALSE.

Some item variables are reverse coded for the purpose of generating the scale scores. The official (e.g., from SAS and SPSS scoring algorithms for this questionnaire automatically replace the original items with their reverse coded versions (as well as recode values of 8 or 9 to missing values). This can be confusing and may produce incorrect scale scores if you accidentally run the SAS/SPSS algorithm more than once on your data. Therefore, scoreFACTG DOES NOT replace any of your original item variables with the reverse coded versions. However, for consistency with the behavior of the other algorithms on, the updateItems argument is provided. If set to TRUE, then an updated set of items will be included in the output data frame. These updated items differ from the original items in 3 ways: (1) any original item that needs to be reverse coded for scoring will be updated with its reverse coded version, (2) any values of 8 or 9 will be replaced with NA, and (3) the updated items will be renamed by adding the suffix "_rc" (for "re-coded") to the original names, e.g., GP1_rc.

The keepNvalid argument is intended to provide additional information on missing item patterns and will not be of interest to most users. For most of the scale scores, one of the intermediate steps in the scoring algorithm is to calculate for each respondent the number of valid, non-missing items on the scale. If keepNvalid = TRUE, then additional variables with these valid item counts will be returned for each applicable scale score. These variables are named with the suffix "_N", e.g., in the format, SCALENAME_N.


A data frame with the following scale scores is returned:

If a variable was given to the id argument, then that variable will also be in the returned data frame. Additional, relatively unimportant, variables will be returned if updateItems = TRUE or keepNvalid = TRUE.


This function scores ONLY the general FACT-G items. It does not score any "Additional Concerns" items (which assess issues relevant to a specific cancer type, treatment, or symptom). If you have any "Additional Concerns" items in your data, then you should use the FACTscorer scoring function that corresponds to the specific FACT questionnaire you administered. For example, if you administered the FACT-B (i.e., FACT-Breast Cancer) questionnaire, you should use the scoreFACT_B function instead of scoreFACTG.

Keep in mind that this function (and R in general) is case-sensitive.

All variables should be in numeric or integer format.

This scoring function expects missing item responses to be coded as NA, 8, or 9, and valid item responses to be coded as 0, 1, 2, 3, or 4. Any other value for any of the items will result in an error message and no scores.


FACT-G Scoring Guidelines, available at

Cella, D.F., Tulsky, D.S., Gray, G., et al. (1993). The Functional Assessment of Cancer Therapy (FACT) scale: Development and validation of the general measure. Journal of Clinical Oncology, 11(3), 570-579.

Webster, K., Odom, L., Peterman, A., Lent, L., & Cella, D. (1999). The Functional Assessment of Chronic Illness Therapy (FACIT) measurement system: Validation of version 4 of the core questionnaire. Quality of Life Research, 8(7), 604.

Winstead-Fry, P., & Schultz, A. (1997). Psychometric assessment of the Functional Assessment of Cancer Therapy-General (FACT-G) scale in a rural sample. Cancer, 79(12), 2446-2452.

Overcash, J., Extermann, M., Parr, J., Perry, J., & Balducci, L. (2001). Validity and reliability of the FACT-G scale for use in the older person with cancer. American Journal of Clinical Oncology, 24(6), 591-596.

Webster, K., Cella, D., & Yost, K. (2003). The Functional Assessment of Chronic Illness Therapy (FACIT) Measurement System: Properties, applications, and interpretation. Health and Quality of Life Outcomes, 1, 79.

See Also

See FACTscorer for more comprehensive information about using the functions in this package.


## FIRST creating a df with fake item data to score
exampleDat <- make_FACTdata()

## NOW scoring the items in exampleDat

## Returns data frame with ONLY scale scores
scoredDat <- scoreFACTG(exampleDat)

## Using the id argument (makes merging with original data more fool-proof):
scoredDat <- scoreFACTG(exampleDat, id = "ID")
## Merge back with original data, exampleDat:
mergeDat <- merge(exampleDat, scoredDat, by = "ID")

## Returns scale scores, plus recoded items (updateItems = TRUE)
## Also illustrates effect of setting keepNvalid = TRUE.
scoredDat <- scoreFACTG(exampleDat, updateItems = TRUE, keepNvalid = TRUE)
## Descriptives of scored scales
summary(scoredDat[, c('PWB', 'SWB', 'EWB', 'FWB', 'FACTG')])

raybaser/FACTscorer documentation built on May 27, 2019, 2:05 a.m.