R-创建单个对象形成一个包含它们的表



这是我的问题:

我有一个与此类似的表:

TABLE_NAME          COLUM_NAME          DATA_TYPE 
table_1               DATA              DATE
table_1               NAME              VARCHAR2
table_1               SURNAME           VARCHAR2
table_2               DATA              DATE
table_2               PACK              NUMBER

我要做的是基于将table_name作为名称的table_name值创建2个不同的表。像这样

table_1

COLUM_NAME          DATA_TYPE 
   DATA              DATE
   NAME              VARCHAR2
   SURNAME           VARCHAR2

table_2

COLUM_NAME          DATA_TYPE
DATA              DATE
PACK              NUMBER

这样,我可以创建表格的目录,同义词和DB的视图(不可能从连接中获取此类元数据)。

我该如何实现?

我们可以使用split创建data.framelist S

lst1 <- split(df1[-1], df1[[1]])
lst1
#$table_1
#  COLUM_NAME DATA_TYPE
#1       DATA      DATE
#2       NAME  VARCHAR2
#3    SURNAME  VARCHAR2
#$table_2
#  COLUM_NAME DATA_TYPE
#4       DATA      DATE
#5       PACK    NUMBER

在这里,split基于提供的因子(split中的f)将data.frame分开。它寻找在" table_name"中具有相同元素的行,并将它们分组在一起,然后返回这些类似行的list

来自tidyverse您可以使用filter,然后使用select删除第一列:

table1 <- df %>%
  filter(TABLE_NAME == "table_1") %>% 
  select(-TABLE_NAME)
table2 <- df %>%
  filter(TABLE_NAME == "table_2") %>% 
  select(-TABLE_NAME)

您也可以将功能放置在一个数据帧中工作:

table_fun <- function(x) {
  df %>%
    filter(TABLE_NAME == x) %>%
    select(-TABLE_NAME)
}
table_2 <- table_fun("table_2")
# A tibble: 2 x 2
  COLUM_NAME DATA_TYPE
  <chr>      <chr>    
1 DATA       DATE     
2 PACK       NUMBER 

使用dplyr,您也可以尝试:

df %>%
 group_split(TABLE_NAME)
[[1]]
# A tibble: 3 x 3
  TABLE_NAME COLUM_NAME DATA_TYPE
  <chr>      <chr>      <chr>    
1 table_1    DATA       DATE     
2 table_1    NAME       VARCHAR2 
3 table_1    SURNAME    VARCHAR2 
[[2]]
# A tibble: 2 x 3
  TABLE_NAME COLUM_NAME DATA_TYPE
  <chr>      <chr>      <chr>    
1 table_2    DATA       DATE     
2 table_2    PACK       NUMBER 

相关内容

  • 没有找到相关文章

最新更新