Как создать столбец в R Loop - PullRequest
0 голосов
/ 26 января 2020

Привет. Я пытаюсь упростить мой код, используя al oop. Я попытался изменить имя столбца (fips to area_fips) в нескольких фреймах данных, а позже я добавлю начальный 0 к столбцу "area_fips". Я не знаю, почему мой l oop ничего не сделал. Мои данные выглядят так:

fips   state  county
1234   AL     xx county
2345   AL     xx county
...

Вот что у меня есть.

list_2014 = read.csv('C:/cfpb_list_2014.csv')
list_2015 = read.csv('C:/cfpb_list_2015.csv')
list_2016 = read.csv('C:/cfpb_list_2016.csv')
list_2017 = read.csv('C:/cfpb_list_2017.csv')
list_2018 = read.csv('C:/cfpb_list_2018.csv')
list_2019 = read.csv('C:/cfpb_list_2019.csv')

filelist = c('list_2014','list_2015','list_2016','list_2017','list_2018','list_2019')

for (i in filelist){
   d = get(i)
   names(d)[1] = 'area_fips'

   }

Я пытался использовать i $ area_fips в l oop, но это не сработало.

list_2014$area_FIPS = str_pad(list_2014$FIPS, 5, pad = "0")
list_2015$area_FIPS = str_pad(list_2015$FIPS, 5, pad = "0")
list_2016$area_FIPS = str_pad(list_2016$FIPS, 5, pad = "0")
list_2017$area_FIPS = str_pad(list_2017$FIPS, 5, pad = "0")
list_2018$area_FIPS = str_pad(list_2018$FIPS, 5, pad = "0")
list_2019$area_FIPS = str_pad(list_2019$FIPS, 5, pad = "0")

Спасибо!

1 Ответ

1 голос
/ 26 января 2020

Вы можете использовать mget, чтобы получить все кадры данных в одном списке, изменить имя столбца первого столбца и применить к нему str_pad. Затем мы можем return измененный фрейм данных.

total_list <- lapply(mget(filelist), function(x) {
   names(x)[1] = 'area_fips'
   x[[1]] <- stringr::str_pad(x[[1]], 5, pad = "0")
   return(x)
})

Если они нужны вам как отдельные кадры данных, мы можем использовать list2env

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