У меня есть сгруппированный набор данных, который я бы хотел перекалибровать, чтобы предоставить больше данных для анализа. По сути, я хочу добавить положительные эквиваленты наименьшего числа (отрицательного числа) в каждой группе ко всем числам внутри этой группы. Обратите внимание, что я хочу, чтобы это правило применялось только к группам, содержащим только отрицательные числа. Например, в приведенной ниже диаграмме A данных правило не нужно применять к A1, так как оно не содержит отрицательных чисел.Калибровка данных в R
Вот пример dataframe:
x_1 <- c("A1", "A1","A1", "B10", "B10", "B10","B10", "B500", "C100", "C100", "C100",
"D40", "G100", "G100")
z_1 <- c(1.1, 1.4, 1.6, -1.0, -2.2, 3, 2.3, 2.0, -3.4, -4.1, 2, 2, 2.4, -3.5)
A <- data.frame(x_1, z_1)
x_1 z_1
A1 1.1
A1 1.4
A1 1.6
B10 -1.0
B10 -2.2
B10 3.0
B10 2.3
B500 2.0
C100 -3.4
C100 -4.1
C100 2.0
D40 2.0
G100 2.4
G100 -3.5
Результат Я хотел бы достичь дается dataframe В ниже:
b_2 <- c(1.1, 1.4, 1.6, 0, 1.2, 4.5, 5.2, 2.0, 0, 0.7, 6.1, 2.0, 0, 5.9)
B <- data.frame(x_1, b_2)
x_1 b_2
A1 1.1
A1 1.4
A1 1.6
B10 0.0
B10 1.2
B10 4.5
B10 5.2
B500 2.0
C100 0.0
C100 0.7
C100 6.1
D40 2.0
G100 0.0
G100 5.9
Например, чтобы получить b_2[4:7]
, я добавил 2.2 ко всем другие номера и т. д.
Я начал с заказа данных с помощью G <- A[order(A$x_1, A$z_1), ]
, но я не знаю никакой другой функции, которую я могу для выполнения этой задачи. Функция совпадения здесь не будет иметь большого значения.
Я сделал короткий поиск, но я до сих пор не знаю, что еще использовать здесь. Поэтому я тепло приветствую любые полезные предложения.
+1 для' min (0, z_1) 'part :-) – A5C1D2H2I1M1N2O1R2T1
@ BrodieG, большое спасибо за ваш ответ. –