В for (i в xxx) нельзя использовать «i: =» для именования нового столбца, который я хочу создать в таблице данных - PullRequest
0 голосов
/ 16 мая 2019

Это моя фиктивная таблица данных:

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), есть ли способ, которым я могу этого достичь?

Большое вам спасибо за ваше время !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...