Назначить несколько категориальных значений серии переменных фрейма данных в r

Скажем, у меня есть следующий ввод данных в R

G <- c(1,1,0,0,0,0,0,0,0) 
H <- c(0,1,1,0,0,0,0,0,0) 
I <- c(0,0,0,0,1,1,0,0,0) 
J <- c(0,0,0,1,0,1,0,0,0) 
K <- c(0,0,0,0,0,0,1,1,0) 
L <- c(0,0,0,0,0,0,0,1,1)

list <- data.frame(G,H,I,J,K,L)

Я хочу назначить

  • 'a' значение для любого наблюдения, где 1 появляется в G или H или в обоих
  • 'b' к наблюдениям, где 1 появляется в одном или обоих из I и J.
  • 'c' к наблюдениям, где 1 появляется либо в / и в K, либо в L.

1 ответ

Решение

Это простое решение: создать переменную, а затем присвоить ей значения с помощью подмножеств. Достаточно ли этого для вашей цели?

list$Z <- NA
list$Z[list$G|list$H] <- "a"
list$Z[list$I|list$J] <- "b"
list$Z[list$K|list$L] <- "c" 
list

РЕДАКТИРОВАТЬ: Согласно предложению David Arenburg, код становится чище и лучше читаемым (и, вероятно, более эффективным) с помощью within():

list$Z <- NA
within(list, Z[G|H]<-"a"; Z[I|J]<-"b"; Z[K|L]<-"c")
Другие вопросы по тегам