I have these several consecutive loops in some data-wrangling code. Obviously, this is not the most efficient method for completing these tasks. I want to convert them into a function I can call with each of the variable names. In addition, to help with this, I'm curious if someone can walk me through their thought process on converting the loop into a function. What do you look at first, and then how do you get to the end product? I don't have a technical know-how issue with the function, so much as I'm not quite sure where to start with dissecting the code logically. Sorry for no reprex.
# Loop through post_mice_sas to check for previous
# value of > max_percent_missing and if it is greater than that value to
# reset the variable for that specific case to "NA" to prepare for imputing
# total scores only
# Loop through each row of the post_mice_sas data frame
for (i in 1:nrow(post_mice_sas)) {
# Check if the value in the lazy_sas column of the current row is greater
# than max_percent_missing
if (post_mice_sas$lazy_sas[i] > max_percent_missing) {
# If the condition is true, loop through each column of the current row
for (j in 2:ncol(post_mice_sas)) {
# Set the value of the current cell to NA
post_mice_sas[i, j] <- NA
}
}
}
# Repeat same test for each measure's variables
# PMS
for (i in 1:nrow(post_mice_pms)) {
if (post_mice_pms$lazy_pms[i] > max_percent_missing) {
for (j in 2:ncol(post_mice_pms)) {
post_mice_pms[i, j] <- NA
}
}
}
# GAD
for (i in 1:nrow(post_mice_gad)) {
if (post_mice_gad$lazy_gad[i] > max_percent_missing) {
for (j in 2:ncol(post_mice_gad)) {
post_mice_gad[i, j] <- NA
}
}
}
# PHQ
for (i in 1:nrow(post_mice_phq)) {
if (post_mice_phq$lazy_phq[i] > max_percent_missing) {
for (j in 2:ncol(post_mice_phq)) {
post_mice_phq[i, j] <- NA
}
}
}
# DTS
for (i in 1:nrow(post_mice_dts)) {
if (post_mice_dts$lazy_dts[i] > max_percent_missing) {
for (j in 2:ncol(post_mice_dts)) {
post_mice_dts[i, j] <- NA
}
}
}
# RTS
for (i in 1:nrow(post_mice_rts)) {
if (post_mice_rts$lazy_rts[i] > max_percent_missing) {
for (j in 2:ncol(post_mice_rts)) {
post_mice_rts[i, j] <- NA
}
}
}
# UPPS
for (i in 1:nrow(post_mice_upps)) {
if (post_mice_upps$lazy_upps[i] > max_percent_missing) {
for (j in 2:ncol(post_mice_upps)) {
post_mice_upps[i, j] <- NA
}
}
}
# BSMAS
for (i in 1:nrow(post_mice_bsmas)) {
if (post_mice_bsmas$lazy_bsmas[i] > max_percent_missing) {
for (j in 2:ncol(post_mice_bsmas)) {
post_mice_bsmas[i, j] <- NA
}
}
}