Это вариация вопроса об использовании функции тах() в заявлении, которое я для фильтрации data.table: R data.table using max in i statementR data.table с помощью медианного я заявление
Теперь я пытаюсь выяснить, как использовать функцию median() в той же ситуации. Вот мой код, который возвращает все строки:
> test_dt <- data.table(value1 = 1:10, value2 = 2:11, value3 = 3:12)
> test_dt[median(c(value1, value2, value3)) < 7]
value1 value2 value3
1: 1 2 3
2: 2 3 4
3: 3 4 5
4: 4 5 6
5: 5 6 7
6: 6 7 8
7: 7 8 9
8: 8 9 10
9: 9 10 11
10: 10 11 12
А вот то, что я ожидаю, чтобы получить, если функция медиана() работала на каждой строке отдельно:
value1 value2 value3
1: 1 2 3
2: 2 3 4
3: 3 4 5
4: 4 5 6
5: 5 6 7
6: 6 7 8
Если у вас есть числовой набор данных, работа с матрицами, вероятно, больше смысла. Вы можете сделать что-то вроде 'matrixStats :: rowMedians (as.matrix (test_dt [, value1: value3, with = FALSE])) <7', например, чтобы найти правильные индексы. –
@DavidArenburg Если вы ставите это как ответ, я буду отмечать его как правильный. Это кажется запутанным, но оно работает. –
Это не про свернутый или нет, речь идет о структуре данных, с которой вы работаете. Если бы 'test_dt' уже была матрицей, решение было бы просто' test_dt [rowMedians (test_dt) <7,] ', это запутанное? Все зависит от структуры ваших данных и от того, что вы планируете с ней делать. –