Учитывая df
следующим образом:Выберите п-е значения агрегированного столбца после группы в R
# group value
# 1 A 8
# 2 A 1
# 3 A 7
# 4 B 3
# 5 B 2
# 6 B 6
# 7 C 4
# 8 C 5
df <- structure(list(group = structure(c(1L, 1L, 1L, 2L, 2L, 2L, 3L,
3L), .Label = c("A", "B", "C"), class = "factor"), value = c(8L,
1L, 7L, 3L, 2L, 6L, 4L, 5L)), .Names = c("group", "value"), class = "data.frame", row.names = c(NA,
-8L))
и вектор индексов (возможно, с NA
):
inds <- c(2,1,NA)
Как мы можем получить n-й элемент столбца value
на группу, предпочтительно в базе R?
Например, на основе inds
, мы хотим, чтобы второй элемент value
в группе A
, первый элемент в группе B
, NA
в группе C
. Таким образом, результат будет:
#[1] 1 3 NA
Ваш «data.frame» заказал в колонке «группы»? Вы можете, просто, подмножество «значение», добавив соответствующее смещение в 'inds':' df $ value [cumsum (c (0, head (tabulate (df $ group), -1))) + inds] ' –
@ alexis_laz Хорошая точка, но это необязательно упорядочено столбцом «группа». – 989