Saya bekerja dengan beberapa data peringkat yang dikelompokkan yang memiliki garis lintang dan garis bujur. Saya ingin menambahkan 0,00075 ke bidang garis lintang setiap kali peringkatnya naik 1.
Di bawah ini adalah salah satu dari 5000 grup dan tidak diketahui berapa rak maksimalnya, jadi saya memerlukan ini dengan dalam grup_by idealnya menggunakan dplyr.
Saya tahu saya bisa menggunakan a
group_by(loc_id) %>% mutate(y = if_else(rank > 1, as.character(Y + 0.00075), as.character(Y))
tapi ini hanya berhasil satu kali saja.
Berikut adalah beberapa kode r untuk membangun kerangka data yang penuh dengan data
id <- c(1,2,3,4,5)
loc_id <- c(77,77,77,77,77)
x <- c(-74.001981, -74.001981, -74.001981, -74.001981, -74.001981)
y <- c(40.736038, 40.736038, 40.736038, 40.736038, 40.736038)
views <- c(55,45,66,22,99)
rank <- c(3,4,2,5,1)
data <- data.frame(id, loc_id, x, y, views, rank)
data %>% group_by(loc_id) %>% mutate(y = y + ((rank - 1) * 0.00075))
saja? - person tmfmnk   schedule 23.08.2019