Я хотел бы добавить столбец-столбец в фрейм данных на основе набора одинаковых строк. Для этого я использовал пакет data.table
. В моем случае сравнение строк должно выполняться из комбинации столбцов «z» AND («x» ИЛИ «y»).data.table: «групповой счетчик» для определенной комбинации столбцов
Я проверил:
DF[ , Index := .GRP, by = c("x","y","z") ]
но результат является сочетание "Z" И "х" и "у".
Как я могу сочетать «z» AND («x» ИЛИ «y»)?
Вот пример данных:
DF = data.frame(x=c("a","a","a","b","c","d","e","f","f"), y=c(1,3,2,8,8,4,4,6,0), z=c("M","M","M","F","F","M","M","F","F"))
DF <- data.table(DF)
Я хотел бы иметь этот выход:
> DF
x y z Index
1: a 1 M 1
2: a 3 M 1
3: a 2 M 1
4: b 8 F 2
5: c 8 F 2
6: d 4 M 3
7: e 4 M 3
8: f 6 F 4
9: f 0 F 4
FYI, вы можете создать свой набор данных, используя 'data.table', не используя' data.frame'. Или, альтернативно, конвертируйте свой 'data.frame' в' data.table' без копий, используя 'setDT'. Кроме того, какой должен быть желаемый результат для таких случаев, как 'data.table (x = c (" a "," a "," a "), y = c (1, 1, 2), z = c (" M "," F "," F "))'? –
Для вашего примера 'DF [, Index: = rleid (z)]' будет работать, но он учитывает только «Z», а не («x» ИЛИ «y»). – lmo
Ок, и выход для 'data.table (x = c (" b "," a "," a "), y = c (1, 1, 2), z = c (" F "," F "," F "))'? –