R Data.Table Arithmeti c Количество - PullRequest
1 голос
/ 04 мая 2020
data=data.table("Student"=c(1,1,1,1,1,2,2,3,3,3,4,4,5,5,5,5,5),
"X1"=c(0,0,1,1,1,0,2,0,0,2,0,1,0,0,0,1,2))

I sh для подсчета трех объектов.

Сначала я наберу sh, чтобы подсчитать, сколько учеников имеет 1 в столбце X1.

Во-вторых, я sh подсчитает, сколько учеников имеет 2 в столбце X1 перед 1.

Три Я sh, чтобы подсчитать, сколько учеников имеет 2 в столбце X1 после 1.

Я ищу решение data.table

1 Ответ

1 голос
/ 04 мая 2020

Мы можем использовать match, чтобы получить индекс первого вхождения 1 или 2, проверить, меньше ли он или больше, чем после группировки по «Студенту», тогда мы получим sum логических векторов, созданных для вернуть счет

library(data.table)
data[, .(First = any(X1 == 1),
         Second = match(2, X1, nomatch = 0) < match(1, X1, nomatch = 0),
         Third = match(2, X1, nomatch = 0) > match(1, X1, nomatch = 0) & any(X1 == 1)),
        Student][, lapply(.SD, sum), .SDcols = First:Third]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...