【发布时间】:2021-02-24 15:59:50
【问题描述】:
我一直在寻找如何使用stringr::str_split 或tidyr::separate 来完成我正在寻找的事情的示例。我不确定做我正在寻找的最有效的方法。我基本上希望在下面的示例中使用data 中列出的 2 列来创建下面的output_df 中显示的 4 列。
对于output_df:前3列来自base_out_state列,第4列是data中的avg_re。 output_df 中的所有列都应该是数字。前 3 列的列名具有前缀 on_
我猜这个解决方案也会使用purrr,但我没有成功。
data <- tibble::tribble(
~base_out_state, ~avg_re,
"0 outs, 1b 2b 3b", 2.53237410071942,
"0 outs, _ 2b 3b", 1.95045045045045,
"1 outs, 1b 2b 3b", 1.73913043478261,
"0 outs, 1b 2b _", 1.60282021151586,
"0 outs, 1b _ 3b", 1.59868421052632,
"1 outs, _ 2b 3b", 1.47916666666667,
"0 outs, _ _ 3b", 1.42028985507246,
"1 outs, 1b _ 3b", 1.27450980392157,
"0 outs, _ 2b _", 1.11675126903553,
"1 outs, _ _ 3b", 0.960416666666667,
"1 outs, 1b 2b _", 0.939353099730458,
"0 outs, 1b _ _", 0.925538103548575,
"2 outs, 1b 2b 3b", 0.740189445196211,
"1 outs, _ 2b _", 0.708523096942095,
"1 outs, 1b _ _", 0.568587968789328,
"2 outs, _ 2b 3b", 0.55668358714044,
"0 outs, _ _ _", 0.534048257372654,
"2 outs, 1b _ 3b", 0.53125,
"2 outs, 1b 2b _", 0.463123644251627,
"2 outs, _ _ 3b", 0.39,
"2 outs, _ 2b _", 0.324457593688363,
"1 outs, _ _ _", 0.286259541984733,
"2 outs, 1b _ _", 0.230750721847931,
"2 outs, _ _ _", 0.104665825977301
)
output_df<- tibble::tribble(
~outs_when_up, ~on_1b, ~on_2b, ~on_3b, ~avg_re,
0, 1, 1, 1, 2.53237410071942,
0, 0, 1, 1, 1.95045045045045,
1, 1, 1, 1, 1.73913043478261,
0, 1, 1, 0, 1.60282021151586,
0, 1, 0, 1, 1.59868421052632,
1, 0, 1, 1, 1.47916666666667,
0, 0, 0, 1, 1.42028985507246,
1, 1, 0, 1, 1.27450980392157,
0, 0, 1, 0, 1.11675126903553,
1, 0, 0, 1, 0.960416666666667,
1, 1, 1, 0, 0.939353099730458,
0, 1, 0, 0, 0.925538103548575,
2, 1, 1, 1, 0.740189445196211,
1, 0, 1, 0, 0.708523096942095,
1, 1, 0, 0, 0.568587968789328,
2, 0, 1, 1, 0.55668358714044,
0, 0, 0, 0, 0.534048257372654,
2, 1, 0, 1, 0.53125,
2, 1, 1, 0, 0.463123644251627,
2, 0, 0, 1, 0.39,
2, 0, 1, 0, 0.324457593688363,
1, 0, 0, 0, 0.286259541984733,
2, 1, 0, 0, 0.230750721847931,
2, 0, 0, 0, 0.104665825977301
)
【问题讨论】: