Я пытаюсь преобразовать названия продуктов Amazon в определенные категории и заменить исходные значения в моем фрейме данных. Как мне это сделать?
У меня уже есть код регулярного выражения и цикл for, который может найти и напечатать преобразование, но у меня возникают проблемы при замене исходных значений в столбце. У меня также есть вложенный цикл for, который, кажется, работает, но он только правильно трансформирует и заменяет одну из категорий (Kindle). Я думаю, что мои условия отдыха не работают так, как мне бы хотелось.
Код для определения категории:
fire = unique(grep('^[^Certified].*Fire TV', amz$name, value=TRUE))
kindle = unique(grep('^[^Certified]*Kindle', amz$name, value=TRUE))
echo = unique(grep('[^Certified].*Echo', amz$name, value=TRUE))
tap = unique(grep('[^Certified].*Tap', amz$name, value=TRUE))
tablet = unique(grep('^[^Certified].*Tablet', amz$name, value=TRUE))
refurb = unique(grep('^Certified', amz$name, value=TRUE))
Код для преобразования и печати Категории:
for (x in amz$name){
if(x %in% fire
){print('Fire TV')} else if(x %in% kindle
){print('Kindle')} else if(x %in% echo
){print('Echo')} else if(x %in% tap
){print('Tap')} else if(x %in% tablet
){print('Tablet')} else if(x %in% refurb
){print('Certified Refurbished')} else {
print('Misc')
}
}
Код, пытающийся заменить исходные значения:
for (i in 1:nrow(amz)){
for (x in amz$name[i]){
if(x %in% fire
){(amz$name[i] <- 'Fire TV')
break} else if(x %in% kindle
){(amz$name[i] <- 'Kindle')
break} else if(x %in% echo
){(amz$name[i] <- 'Echo')
break} else if(x %in% tap
){(amz$name[i] <- 'Tap')
break} else if(x %in% tablet
){(amz$name[i] <- 'Tablet')
break} else if(x %in% refurb
){(amz$name[i] <- 'Certified Refurbished')
break} else {(amz$name[i] <- 'Misc')
break
}
}
}
Во внутреннем цикле я ожидаю, что код проверяет, находится ли x в первом списке, а если нет, то перемещается к следующему, пока не найдет список, к которому он принадлежит, и не войдет в категорию в amz $ name [ я]. Как только он найден и введен, я хочу, чтобы внутренний цикл разорвался, а внешний цикл перешел на вторую итерацию, i = 2. Пока что это только правильно для первой категории, остальные категории возвращают NA. Я должен сказать, что продукт на amz $ name [1] - это Kindle Paperwhite. Так что, кажется, выборочная классификация продуктов Kindle.