Использование цикла for для назначения значений - PullRequest
0 голосов
/ 10 июня 2019

Есть ли способ в R использовать цикл for для создания новых столбцов в существующем фрейме данных и присвоения значений вновь создаваемым столбцам?

s_0133_AFE_Nr_Dr_CM['CM_2018001'] = s_0133_AFE_Nr_Dr_CM$AFE_Cost_2018001/s_0133_AFE_Nr_Dr_CM$Dr_2018001
   s_0133_AFE_Nr_Dr_CM['CM_2018002'] = s_0133_AFE_Nr_Dr_CM$AFE_Cost_2018002/s_0133_AFE_Nr_Dr_CM$Dr_2018001
   s_0133_AFE_Nr_Dr_CM['CM_2018003'] = s_0133_AFE_Nr_Dr_CM$AFE_Cost_2018003/s_0133_AFE_Nr_Dr_CM$Dr_2018001
   s_0133_AFE_Nr_Dr_CM['CM_2018004'] = s_0133_AFE_Nr_Dr_CM$AFE_Cost_2018004/s_0133_AFE_Nr_Dr_CM$Dr_2018001
   s_0133_AFE_Nr_Dr_CM['CM_2018005'] = s_0133_AFE_Nr_Dr_CM$AFE_Cost_2018005/s_0133_AFE_Nr_Dr_CM$Dr_2018001
   s_0133_AFE_Nr_Dr_CM['CM_2018006'] = s_0133_AFE_Nr_Dr_CM$AFE_Cost_2018006/s_0133_AFE_Nr_Dr_CM$Dr_2018001
   s_0133_AFE_Nr_Dr_CM['CM_2018007'] = s_0133_AFE_Nr_Dr_CM$AFE_Cost_2018007/s_0133_AFE_Nr_Dr_CM$Dr_2018001
   s_0133_AFE_Nr_Dr_CM['CM_2018008'] = s_0133_AFE_Nr_Dr_CM$AFE_Cost_2018008/s_0133_AFE_Nr_Dr_CM$Dr_2018001
   s_0133_AFE_Nr_Dr_CM['CM_2018009'] = s_0133_AFE_Nr_Dr_CM$AFE_Cost_2018009/s_0133_AFE_Nr_Dr_CM$Dr_2018001
   s_0133_AFE_Nr_Dr_CM['CM_2018010'] = s_0133_AFE_Nr_Dr_CM$AFE_Cost_2018010/s_0133_AFE_Nr_Dr_CM$Dr_2018001
   s_0133_AFE_Nr_Dr_CM['CM_2018011'] = s_0133_AFE_Nr_Dr_CM$AFE_Cost_2018011/s_0133_AFE_Nr_Dr_CM$Dr_2018001
   s_0133_AFE_Nr_Dr_CM['CM_2018012'] = s_0133_AFE_Nr_Dr_CM$AFE_Cost_2018012/s_0133_AFE_Nr_Dr_CM$Dr_2018001

Можно ли записать это в 1 строку, используя некоторыецикл?Обратите внимание, что мы присваиваем значениям, создавая новые столбцы.Я попытался использовать функцию assing (), но R создает новые переменные вне фрейма данных, а не добавляет их в тот же фрейм данных

1 Ответ

1 голос
/ 23 июня 2019

Конечно, вы можете.Просто назначьте несколько столбцов с paste0 вдоль последовательности чисел:

s_0133_AFE_Nr_Dr_CM[paste0("CM_", 2018001:2018012)] <- s_0133_AFE_Nr_Dr_CM[paste0("AFE_Cost_", 2018001:2018012)]/s_0133_AFE_Nr_Dr_CM$Dr_2018001
...