创建包含它们的 table 单个对象
Create single objects form a table containing them
这是我的 R 问题:
我有一个 table 类似于:
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 值创建 2 个不同的 table,名称为 TABLE_NAME。
像这样
table_1
COLUM_NAME DATA_TYPE
DATA DATE
NAME VARCHAR2
SURNAME VARCHAR2
table_2
COLUM_NAME DATA_TYPE
DATA DATE
PACK NUMBER
这样我就可以创建我的 table 的目录、数据库的同义词和视图(使用 ROracle 无法从连接中获取此类元数据)。
我怎样才能做到这一点?
我们可以使用 split
创建 list
个 data.frame
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
根据提供的系数(f
in split
)拆分 data.frame。它在 'TABLE_NAME' 中查找具有相同元素的行并将它们组合在一起,并且 return 那些相似行的 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
这是我的 R 问题:
我有一个 table 类似于:
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 值创建 2 个不同的 table,名称为 TABLE_NAME。 像这样
table_1
COLUM_NAME DATA_TYPE
DATA DATE
NAME VARCHAR2
SURNAME VARCHAR2
table_2
COLUM_NAME DATA_TYPE
DATA DATE
PACK NUMBER
这样我就可以创建我的 table 的目录、数据库的同义词和视图(使用 ROracle 无法从连接中获取此类元数据)。
我怎样才能做到这一点?
我们可以使用 split
创建 list
个 data.frame
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
根据提供的系数(f
in split
)拆分 data.frame。它在 'TABLE_NAME' 中查找具有相同元素的行并将它们组合在一起,并且 return 那些相似行的 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