разбиение строки на части Numberi c и Non-Numberri c в зависимости от заданного символа c в R - PullRequest
0 голосов
/ 24 февраля 2020

У меня есть эта проблема, которая кажется ужасно тривиальной, однако я не могу найти достойный способ обойти ее

У меня есть этот фрейм данных, который напоминает таблицу с выходными данными регрессии:

 Variabel       Model 1           Model 2
        A      5.56545* 35.45645343434***
        B 9.334223232**    14.45465464***
        C 64.33232323**         3.798877*

Оба столбца 2 (модель 1) и 3 (модель 2) являются строковыми переменными. Тем не менее, я бы хотел, чтобы в круге цифры c было всего 3 цифры. Моя идея go об этом состояла бы в том, чтобы разбить каждый столбец, преобразовать числа в цифру c, округлить их до 3 цифр и вернуть обратно вместе. Мне это кажется довольно тривиальным, однако я не могу найти хороший способ обойти это, особенно один, где я могу сделать это для обоих столбцов одновременно.

Может ли это быть сделано с помощью регулярных выражений base R, с такими пакетами, как stringr, и как это делается за наименьшее количество шагов.

Заранее спасибо

1 Ответ

2 голосов
/ 24 февраля 2020
round(as.numeric(gsub("[^0-9\\.]", "", "35.45645343434***")),digits = 3)

MRE:

df <- data.frame(Variable = c("A", "B", "C"),
                 Model1 = x,
                 Model2 = x)

Как функция:

f <- function(x) return(paste0(round(as.numeric(gsub("[^0-9\\.]", "", x)),digits = 3), gsub("[0-9\\.]", "", x)))

Использовать функцию:

cbind(df[, 1, drop=FALSE], apply(df[,-1], 2, f))

Возвращает:

  Variable    Model1    Model2
1        A 35.456*** 35.456***
2        B 14.455*** 14.455***
3        C    3.799*    3.799*
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...