У меня есть кадр данных с разными идентификаторами, и я хочу создать подгруппу, в которой: для каждого идентификатора я получаю только одну строку с ближайшим значением до 0,5 в переменной Y .Возвращаемые строки, устанавливающие «ближайшее значение» в R
Это мой кадр данных:
df <- data.frame(ID=c("DB1", "BD1", "DB2", "DB2", "DB3", "DB3", "DB4", "DB4", "DB4"), X=c(0.04, 0.10, 0.10, 0.20, 0.02, 0.30, 0.01, 0.20, 0.30), Y=c(0.34, 0.49, 0.51, 0.53, 0.48, 0.49, 0.49, 0.50, 1.0) )
Это то, что я хочу, чтобы получить
ID X Y DB1 0.10 0.49 DB2 0.10 0.51 DB3 0.30 0.49 DB4 0.20 0.50
Я знаю, что могу добавить фильтр с ddply, используя что-то вроде этого
ddply(df, .(ID), function(z) { z[z$Y == 0.50, ][1, ] })
и это будет работать хорошо, если там были всегда 0,50 значение Y, которое не так.
Как изменить значение == для «ближайшего к» 0.5, или есть ли другая функция, которую я мог бы использовать вместо этого?
Спасибо заранее!
Я думаю, что у вас есть опечатка в создании данных - во втором идентификаторе строки у вас есть BD1, где я думаю, что вы имеете в виду 'DB1'. – Gregor