После группировки по «ID», используйте mutate
, чтобы создать новый столбец, разделив «Значение» на first
из «Значение»
library(dplyr)
df1 %>%
group_by(ID) %>%
mutate(Col = Value/first(Value))
Если first
'Значение' равно 0, и мы не хотим его использовать, тогда подставьте 'Значение' в логическое выражение и затем first
этого
df1 %>%
group_by(ID) %>%
mutate(Col = Value/first(Value[Value != 0]))
Или в base R
df1$Col <- with(df1, Value/ave(Value, ID, FUN = head, 1))
ПРИМЕЧАНИЕ. Запятая в 'Value' предполагает, что это столбец character
. В этом случае его сначала следует изменить на десятичное число (.
), если это так, преобразовать в nunmeric
, а затем выполнить деление. Это можно сделать при чтении данных