Ссылка на переменный номер строки в R

Я новичок в R и был бы признателен за вашу помощь со следующим вопросом:

У меня есть код, который проходит через все значения (x) в столбце набора данных с именем m, сравнивая их одно за другим с фиксированным значением с помощью цикла for. Я бы хотел, чтобы x сравнивался с моим фиксированным значением (0,17) ТОЛЬКО ЕСЛИ ячейка в m [(ТАКЖЕ СТРОКА, КАК x), "reference_column_name"] содержит определенную строку.

Цель состоит в том, чтобы получить в конце m столбец со значениями 0,1,2 или 3 на основе сравнения x с ячейкой из ссылочного столбца с тем же номером строки, что и x. Что-то вроде этого:

new_column
0
2
2
3
1
1
2
0
3

Как мне сослаться на строку x (поскольку моя переменная изменяется по мере продолжения цикла for)? Чем я могу заменить "(ЖЕ СТРОКА, КАК x)"?

это мой код:

m$new_colum <- 0  #I start by assigning everything the value 0.


for (x in m$current_column) {
  if ((grepl("string",((m[(SAME ROW AS x),"reference_column_name"])),fixed=TRUE))==TRUE){ 
    if (is.na(x)){ 
      m$new_column<-0
      }
    else if (x <= 0.17) { 
      m$new_column<-1}
    else if (x > 0.17) {
      m$new_column<-2}
  }
  else {m$new_column<-3}
}

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

Спасибо за вашу помощь!

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
204
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

В соответствии с моим пониманием вашего вопроса вот мое решение:

m$new_column <- ifelse(grepl("string", m$ref_column), ifelse(is.na(m$x), 0, ifelse(m$x <= 0.17, 1, 2)), 3)

Этот код сначала проверит строку в столбце ссылки в той же строке. Если он не найдет, он будет равен 3. Если он найдет его, он перейдет во второй блок ifelse. - В этом блоке он сначала проверяет наличие NA и присваивает 0, иначе он переходит в 3-й блок ifelse, где, наконец, проверяет, имеет ли ваш столбец «x» значение 0,17 или меньше, и присваивает 1 else 2.

Надеюсь это поможет

ЭТО СРАБОТАЛО! за исключением того, что я заменил здесь «x» на имя столбца x. Большое спасибо.

Yasmin Carmelle Vahedi 03.08.2018 08:49

Можно использовать серию правильно проиндексированных назначений:

 dat <- data.frame( x=runif (20), ref_col=sample( c("string", "not string"), 20,  repl=TRUE) )
 dat$new_col[dat$x > 0.17 & dat$ref_col= = "string"] <- 2
 dat$new_col[dat$x <= 0.17 & dat$ref_col= = "string"] <- 1
 dat$new_col[ is.na(dat$x)] <- 0
 dat$new_col[ dat$ref_col != "string"] <- 3
 dat

В моих крестиках не было никаких NA, но я предполагаю, что они были бы правильно назначены

Другие вопросы по теме