Мне нужно создать новую переменную, содержащую значение в одном столбце, в data.frame
в зависимости от значения другого столбца, пример выглядит следующим образом:Выберите столбец, используя значение в другой строке таблицы данных в R
library(data.table)
set.seed(pi)
DT <- data.table(
X1 = LETTERS[1:10],
X2 = letters[1:10],
Z = sample(c("X1", "X2"), 10, replace = TRUE)
)
DT[]
Этот код генерирует следующий
X1 X2 Z
1: A a X1
2: B b X2
3: C c X1
4: D d X1
5: E e X2
6: F f X2
7: G g X1
8: H h X1
9: I i X2
10: J j X2
Теперь я хочу, чтобы иметь столбец W
где, если столбец Z
является «X1» (или «X2») содержание на колонке X1
(или X2
) является Сел КТИД.
Одним из решений может быть:
DT[Z == "X1", W := X1]
DT[Z == "X2", W := X2]
Но я хотел бы найти более изящный способ сделать это, потому что у меня есть много столбцов, где мне нужно выбрать одну запись.
Благодаря
Спасибо, теперь ответ выглядеть легким, но я застрял в выражениях типа : 'DT [, W: = diag (as.matrix (DT [, DT [, Z], с = FALSE]))]' –
@ EnriquePérezHerrero Создание матрицы и принятие 'diag' должно быть неэффективным – akrun
Да, вы теряете преимущества использования 'data.table' –