WedX - журнал о программировании и компьютерных науках

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

  • Под определением вы имеете в виду, что хотите превратить все записи в строке, например, в a или только те записи, где есть 1 или где есть 0? Вы пробовали что-нибудь, что не сработало? 15.08.2014
  • я пытался использовать команду ifelse, поэтому в конечном итоге я хочу создать дополнительную переменную в «списке», в которой указаны соответствующие значения a, b, c для каждого наблюдения. 15.08.2014
  • Вы имеете в виду для каждой строки? 15.08.2014
  • да, если мы присвоим ему имена категорий (список) = (G, H, I, J, K, L, категории) 15.08.2014

Ответы:


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

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

list$Z <- NA
within(list, Z[G|H]<-"a"; Z[I|J]<-"b"; Z[K|L]<-"c")
15.08.2014
  • Я думаю, что это будет очень эффективно, используя within 15.08.2014
  • Спасибо за комментарий. Я добавил строку кода, которая делает это красивее, используя within(). 15.08.2014
  • Новые материалы

    Как создать диаграмму градиентной кисти с помощью D3.js
    Резюме: Из этого туториала Вы узнаете, как добавить градиентную кисть к диаграмме с областями в D3.js. Мы добавим градиент к значениям SVG и применим градиент в качестве заливки к диаграмме с..

    Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
    Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

    Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
    В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..


    Для любых предложений по сайту: [email protected]