У меня есть наборы данныхdplyr манипуляции построчно группировки мутировать
x <- data.frame(Postcode = c(1, 2, 3, 4, 5, 6),
Latitude = c(3.1, 3.2, 3.3, 3.3, 3.4, 3.4),
Longitude = c(100, 101, 102, 102, 103, 104),
Exposure = c(1, 2, 3, 4, 5, 6))
Я пытаюсь манипулировать данными внутри х становится
x <- data.frame(Postcode = c(1, 2, 3, 4, 5, 6),
Latitude = c(3.1, 3.2, 3.3, 3.3, 3.4, 3.4),
Longitude = c(100, 101, 102, 102, 103, 104),
Exposure = c(1, 2, 3, 4, 5, 6),
coords = c("3.1, 100", "3.2, 101", "3.3, 102", "3.3, 102",
"3.4, 103", "3.4, 104"),
postcode = c("1", "2", "3,4", "3,4", "5", "6"),
exposure = c(1, 2, 7, 7, 5, 6))
Новый столбец postcode
будет склеить в Postcode
, который имеет тот же Latitude
и Longitude
. coords
вставляет Latitude
и Longitude
, а exposure
будет суммировать Exposure
, который имеет то же самое coords
, то есть то же Latitude
и Longitude
.
Я мог бы сделать это с помощью dplyr
пакета и for
цикла
x <- mutate(x, coords = paste(Latitude, Longitude, sep = ", "))
x <- cbind(x, postcode = rep(0, nrow(x)), exposure = rep(0, nrow(x)))
for(i in unique(x$coords)){
x$postcode[x$coords == i] <- paste(x$Postcode[x$coords == i], collapse = ", ")
x$exposure[x$coords == i] <- sum(x$Exposure[x$coords == i])
}
Как я мог сделать это, используя только dplyr
пакета только, без использования for
цикла? или, может быть другой подход, который является более эффективным, чем использование for
цикла, потому что мои фактические наборы данных довольно большие
Второй набор данных имеет неравное количество элементов. Обновите его – akrun
@akrun Я его отредактировал. Спасибо за уведомление –
Он будет закрыт, если вы не исправите: Ошибка в data.frame (Postcode = c (0, 1, 2, 3, 4, 5, 6), Latitude = c (3.1,: аргументы подразумевают различное количество строк: 7, 6 – hrbrmstr