我有一个类似于以下数据集的列:
Initial_Data 3Mo_Data 6Mo_Data Irrelevant_Col1 Irrelevant_Col2
18/24 14/14 NA 1 1
4/24 NA 6/14 0 0
df <- structure(list(Initial_Data = c("18/24", "4/24"), `3Mo_Data` = c("14/14",
NA), `6Mo_Data` = c(NA, "6/14"), Irrelevant_Col1 = 1:0, Irrelevant_Col2 = 1:0), class = "data.frame", row.names = c(NA, -2L))
字符串
我想用这样一种方式来分割它,以识别“Data”的所有列,然后将它们分割成三列:
1.一个带有小数(最初是字符变量)的,表示为小数。
1.带有分子的第二列
1.第三个带有分母的新列
同时忽略不相关的列,以便看起来像下面那样:
Initial_Data 3Mo_Data 6Mo_Data Irrelevant_Col1 Irrelevant_Col2 Inial_Data_Numerator Initial_Data_Denominator 3Mo_Data_Numerator 3Mo_Data_Denominator 6Mo_Data_Numerator 6Mo_Data_Denominator
0.75 1 NA 1 1 18 24 14 14 NA NA
0.17 NA 0.43 0 0 4 24 NA NA 6 14
型
我尝试了类似于下面的操作来生成分子和分母列:
test <- df %>%
mutate(across(contains("Data"),
~ paste0(.x, "Numerator") = str_extract(., "^\\d+"),
~ paste0(.x, "Denominator") = str_extract(.,"(?<=\\D)\\d+"))
型
但给我等号的错误,也许我不能用这种方式使用paste 0?
提前感谢您的帮助!
2条答案
按热度按时间yr9zkbsy1#
tidyverse
工作流:字符串
mutate()
的另一个演示文稿,在across()
中使用cur_column()
:型
k3fezbri2#
这里有一种方法,使用
separate_wider_delim
:字符串