Это моя фиктивная таблица данных:
set.seed(2)
dummy = data.table(location = sample(5, 30, replace=TRUE),
client_type = sample(3, 30, replace=TRUE),
reseller = sample(3, 30, replace=TRUE))
Я хочу заменить значение client_type на, при рассмотрении его распределения с местоположением, на то, которое имеет наибольшее количество.То есть, согласно фиктивной dt:
dummy[location=="2",.N, by = "client_type"]
# client_type N
#1: 1 3
#2: 2 1
#3: 3 1
Итак, для местоположения 2 все "client_type" имеют значение "1", потому что оно имеет наибольшее распределение (N = 3).
Однако, поскольку у меня несколько столбцов (client_type & reseller здесь только для примера, у меня есть гораздо больше ...) Я хочу создать вложенный цикл для циклического прохождения по различным столбцам.Вот мой код:
col = c("client_type", "reseller")
for (i in unique(dummy$location)){
for (j in col){
x = dummy[location==i,.N, by = j]
y = x[which.max(x$N)]$j
dummy[location==i, j:=y]
}
}
Но, похоже, проблема в том, что я не могу назначить "j" в качестве имени во вложенном цикле (j: = y), есть ли способ, которым я могу этого достичь?
Большое вам спасибо за ваше время !!