R DataTable Выбрать строки - PullRequest
       0

R DataTable Выбрать строки

1 голос
/ 27 апреля 2020
data1=data.frame("Student"=c(1, 1, 1, 2, 2, 2, 3, 3, 3),
"Grade"=c(1, 2, 3, 1, 2, 3, 1, 2, 3),
"Score"=c(5, 7, 9, 2, 2, 3, 10, NA, 3))


data2=data.frame("Student"=c(1, 1, 1, 3, 3, 3),
"Grade"=c(1, 2, 3, 1, 2, 3),
"Score"=c(5, 7, 9, 10, NA, 3))

У меня есть «data1» и wi sh для «data2», где я ТОЛЬКО включаю «Student», если «Score» в «Grade» = 1 не менее 4.

My only Знание того, как это сделать, делает это с помощью «Оценки» и «Счета», но это не дает желаемого результата.

library(data.table)
setDT(data1)
data1=data1[Grade==1 & Score >=4)

Как можно указать, что я sh выберу всех СТУДЕНТОВ? которые имеют оценку> = 4 в 1-м классе, а не только ряды

1 Ответ

2 голосов
/ 29 апреля 2020

Вам просто нужно объединиться с желаемыми условиями, чтобы сохранить идентификатор Student.

Это работает?

library(data.table)
data1 <- data.frame("Student"=c(1, 1, 1, 2, 2, 2, 3, 3, 3),
                    "Grade"=c(1, 2, 3, 1, 2, 3, 1, 2, 3),
                    "Score"=c(5, 7, 9, 2, 2, 3, 10, NA, 3))
data2 <- data.frame("Student"=c(1, 1, 1, 3, 3, 3),
                    "Grade"=c(1, 2, 3, 1, 2, 3),
                    "Score"=c(5, 7, 9, 10, NA, 3))
setDT(data1)
setDT(data2)

wanted <- data1[ Grade == 1 & Score >= 4, .( Student ) ]

setkey( wanted, Student )
setkey( data1, Student )

data3 = data1[ wanted ]

data2
#>    Student Grade Score
#> 1:       1     1     5
#> 2:       1     2     7
#> 3:       1     3     9
#> 4:       3     1    10
#> 5:       3     2    NA
#> 6:       3     3     3
data3
#>    Student Grade Score
#> 1:       1     1     5
#> 2:       1     2     7
#> 3:       1     3     9
#> 4:       3     1    10
#> 5:       3     2    NA
#> 6:       3     3     3

Создано в 2020-04-29 пакетом Представлять (v0.3.0)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...