tidyverse 中带有 indices 参数的 by() 等价物是什么?
What is the equivalent of by() with indices argument in tidyverse?
我有一个包含名称列和代码列的数据框,代码列 trim 带有“;”如果名称有超过 1 个代码。
下面 data.frame 一瞥:
df.info是dataframe的名字
Rows: 525
Columns: 2
$ name.company <chr> "521 PARTICIPAÇOES S.A. - EM LIQUIDAÇÃO EXTRAJUDICIAL", "524 PARTICIPAÇOES SA", "AAJR SECURITIZADORA DE CRÉDITO...
$ tickers <chr> NA, "QVQP3B", NA, "ADHM3", "TIET11;TIET3;TIET4", "AFLT3", NA, "ALEF3B", "RPAD3;RPAD5;RPAD6", NA, "ALSO3", "ALPA...
我想要一个有 2 列的数据框,代码和 name.company 但没有 trim 模式“;”。
e.g.:
name ticker
tiete tiet11
tiete tiet3
tiete tiet4
就这样..我使用 by() 函数解决了它,但我不知道如何使用 tidyverse/purrr 包解决它。
没有 tidyverse 的解决方案
get.ticker.df <- function(df.in)
{
# Gets ticker string and organizes it in another data_frame
temp.split <- str_split(df.in$tickers, ';')[[1]]
temp.df <- tibble(name.company = df.in$name.company,
ticker = temp.split)
}
my.l <- by(data = df.info,
INDICES = df.info$name.company,
FUN = get.ticker.df)
df.tickers <- bind_rows(my.l)
我不知道 tidyverse 中这个 by() 函数的等价物。
编辑 - 添加初始帧和理想结果数据帧,使其清晰。
tibble_start <- tibble( name.company = c("AES TIETE", "AMBEV"),
ticker = c("TIET11;TIET3;TIET4", "ABEV3;ABEV4"))
tibble_ideal <- tibble( name.company = c( rep("AES TIETE", 3), rep("AMBEV",2)),
ticker = c("TIET11","TIET3","TIET4","ABEV3","ABEV4"))
提前致谢!
我们可以使用separate_rows
library(dplyr)
library(tidyr)
df1 %>%
separate_rows(tickers)
我有一个包含名称列和代码列的数据框,代码列 trim 带有“;”如果名称有超过 1 个代码。 下面 data.frame 一瞥:
df.info是dataframe的名字
Rows: 525
Columns: 2
$ name.company <chr> "521 PARTICIPAÇOES S.A. - EM LIQUIDAÇÃO EXTRAJUDICIAL", "524 PARTICIPAÇOES SA", "AAJR SECURITIZADORA DE CRÉDITO...
$ tickers <chr> NA, "QVQP3B", NA, "ADHM3", "TIET11;TIET3;TIET4", "AFLT3", NA, "ALEF3B", "RPAD3;RPAD5;RPAD6", NA, "ALSO3", "ALPA...
我想要一个有 2 列的数据框,代码和 name.company 但没有 trim 模式“;”。
e.g.:
name ticker
tiete tiet11
tiete tiet3
tiete tiet4
就这样..我使用 by() 函数解决了它,但我不知道如何使用 tidyverse/purrr 包解决它。
没有 tidyverse 的解决方案
get.ticker.df <- function(df.in)
{
# Gets ticker string and organizes it in another data_frame
temp.split <- str_split(df.in$tickers, ';')[[1]]
temp.df <- tibble(name.company = df.in$name.company,
ticker = temp.split)
}
my.l <- by(data = df.info,
INDICES = df.info$name.company,
FUN = get.ticker.df)
df.tickers <- bind_rows(my.l)
我不知道 tidyverse 中这个 by() 函数的等价物。
编辑 - 添加初始帧和理想结果数据帧,使其清晰。
tibble_start <- tibble( name.company = c("AES TIETE", "AMBEV"),
ticker = c("TIET11;TIET3;TIET4", "ABEV3;ABEV4"))
tibble_ideal <- tibble( name.company = c( rep("AES TIETE", 3), rep("AMBEV",2)),
ticker = c("TIET11","TIET3","TIET4","ABEV3","ABEV4"))
提前致谢!
我们可以使用separate_rows
library(dplyr)
library(tidyr)
df1 %>%
separate_rows(tickers)