Назначить несколько категориальных значений серии переменных фрейма данных в 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")