список таблиц и список переменных для фрейма данных - PullRequest
1 голос
/ 11 апреля 2019

У меня есть потенциально тысячи таблиц, из которых я хочу извлечь конкретные переменные из каждой таблицы, преобразовать их в отдельный фрейм данных, присвоить ему имя "df_prefix и впоследствии проанализировать. Начальные таблицы:

activities
  line_number    id       name  startdate
1       21000 ab123   John Doe 2010-11-01
2       23400 cd456 Peter Gynn 2008-03-25
3       26800 ef789 Jolie Hope 2007-03-14

и:

 classifications
  id var1 var2
1  1    a    1
2  2    b    1
3  3    c    0
4  4    d    0
5  5    e    1

Вывод, который я хотел бы получить для таблицы деятельности и таблиц классификаций:

activities[,c("id", "line_number", "name")]
     id line_number       name
1 ab123       21000   John Doe
2 cd456       23400 Peter Gynn
3 ef789       26800 Jolie Hope

и таблицы классификаций:

  classifications[, c("id")]
1                          1
2                          2
3                          3
4                          4
5                          5

IЯ смотрел на использование list2df и list2env. Я не совсем уверен, что делать..tables [[[1]] [, fields [[1]]] определенно не работает ..

#Make a fake activities table
line_number <- c(21000, 23400, 26800)
id <- c('ab123','cd456','ef789')
name <- c('John Doe','Peter Gynn','Jolie Hope')
startdate <- as.Date(c('2010-11-1','2008-3-25','2007-3-14'))
activities <- data.frame(line_number,id,name, startdate, stringsAsFactors=FALSE)

#Make a fake classifications table
classifications <- data.frame(id = c(1, 2, 3, 4, 5),
                  var1 = c('a', 'b', 'c', 'd', 'e'),
                  var2 = c(1, 1, 0, 0, 1))

#Make list of tables and list of specific fields we need
fields <- list(a = c("id", "line_number", "name"), c = "id")
tables<-list("activities","classifications")

1 Ответ

0 голосов
/ 12 апреля 2019

Это работает, но мне интересно, есть ли способ автоматического именования таблиц вместо репликации исходного списка фреймов данных, т.е. таблиц-имен.В идеале я хотел бы дать ему список фреймов данных, и он автоматически присваивает им имена ..

#Make a fake activities table
line_number <- c(21000, 23400, 26800)
id <- c('ab123','cd456','ef789')
name <- c('John Doe','Peter Gynn','Jolie Hope')
startdate <- as.Date(c('2010-11-1','2008-3-25','2007-3-14'))
activities <- data.frame(line_number,id,name, startdate, stringsAsFactors=FALSE)

#Make a fake classifications table
classifications <- data.frame(id = c(1, 2, 3, 4, 5),
                  var1 = c('a', 'b', 'c', 'd', 'e'),
                  var2 = c(1, 1, 0, 0, 1))

#Make list of tables and list of specific fields we need
fields <- list(a = c("id", "line_number", "name"), c = "id")
tables<-list(activities,classifications)
#table_names<-list("activities_df", "classifications_df") #This is clunky
table_names<-names(Filter(isTRUE, eapply(.GlobalEnv, is.data.frame)))

for(i in 1:length(tables)) {
x=tables[[i]]
y=fields[[i]]
z<-as.data.frame(x[,y])
name <- paste(table_names[i],sep="") 
assign(name,z) 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...