У меня есть 8 наборов данных, и я хочу применить функцию для преобразования любого числа меньше 5 в NA для 3 столбцов (var1, var2, var3) каждого набора данных. Как я могу написать функцию, чтобы сделать это эффективно и быстрее? Я прошел через множество таких вопросов о переполнении стека, но не нашел ответа, где использовались конкретные столбцы. Я написал функцию для замены, но не могу понять, как применить ко всем наборам данных.
Input:
Data1
variable1 variable2 variable3 variable4
10 36 56 99
15 3 2 56
4 24 1 1
Expected output:
variable1 variable2 variable3 variable4
10 36 56 99
15 NA NA 56
NA 24 NA 1
Выполните то же самое для еще 7 наборов данных.
До сих пор я сохранил необходимыепеременные и наборы данных в двух разных списках.
var1=enquo(variable1)
var2=enquo(variable2)
var3=enquo(variable3)
Total=3
listofdfs=list()
listofdfs_1=list()
for(i in 1:8) {
df=sym((paste0("Data",i)))
listofdfs[[i]]=df
}
for(e in 1:Ttoal) {
listofdfs[[e]]= eval(sym(paste0("var",e)))
}
Выбранные столбцы будут проходить через эту функцию:
temp_1=function(x,h) {
h=enquo(h)
for(e in 1:Total) {
if(substr(eval(sym(paste0("var",e))),1,3)=="var") {
y= x %>% mutate_at(vars(!!h), ~ replace(., which(.<=5),NA))
return(y)
}
}
}
Я ожидал чего-то:
lapply (для каждоговыбранные столбцы набора данных, temp_1)