Создать новый столбец для таблицы данных на основе отфильтрованного значения - PullRequest
1 голос
/ 14 февраля 2020

Я хочу отфильтровать столбец и одновременно создать новый столбец для существующего на основе значений других столбцов в предыдущем подмножестве. Ниже приведен такой пример -

library(data.table)
X <- data.table(id = 1:5, L = letters[1:5])
X[id > 2, 'ss' := paste(id, L)]
X
   id L   ss
1:  1 a <NA>
2:  2 b <NA>
3:  3 c  3 c
4:  4 d  4 d
5:  5 e  5 e

Однако, как вы видите, это не возвращает подмножество, то есть номер строки от 3 до 5, а вместо этого всю таблицу данных. Любой указатель на правильный и эффективный подход будет высоко оценен.

1 Ответ

1 голос
/ 14 февраля 2020

Возможно, вы можете применить их отдельно.

library(data.table)

Y <- X[id > 2][,ss := paste(id, L)]
Y
#   id L  ss
#1:  3 c 3 c
#2:  4 d 4 d
#3:  5 e 5 e

Вы можете добавить na.omit к вашей попытке удалить NA значения

na.omit(X[id > 2, 'ss' := paste(id, L)])

Или снова подмножество

X[id > 2, 'ss' := paste(id, L)][id > 2]
...