Как обновить значение столбца в r, не заменяя его - PullRequest
0 голосов
/ 11 ноября 2018

Я хочу обновить значение в столбце в r, но в настоящее время оно заменяет его.

Например:

Темы данных:

 Maths | English | Science | History |  Class

 0.1    |  0.2   |  0.3    |  0.2    |   Y2

 0.9    |  0.5   |  0.7    |  0.4   |   Y1

Это мой код, но в настоящее время он только заменяет число выше на 1 и не добавляет к нему.

classpred$Maths[grepl("^Y9$",classpred$class)] <- 1

Я хотел бы получить такой вывод:

 Maths | English | Science | History |  Class

 1.1    |  0.2   |  0.3    |  0.2    |   Y9

 0.9    |  0.5   |  0.7    |  0.4   |   Y10

1 Ответ

0 голосов
/ 12 ноября 2018

проблема у вас здесь с назначением. Оператор <- в вашем случае назначает 1 индексируемому значению, а не добавлению 1, поэтому решение @hrbrmstr работает путем изменения <- на +. Возьмите этот упрощенный пример:

x <- c(2:10) #dummy sequence
x[3] # index 3rd value in sequence
x[3] <- 1 # replace 3rd value with 1
x # value that was 4 is now 1
x[3] <- x[3]+1 # index 3rd value and add 1 to that value
x # value that became 1 is now 2

Если вам нужно выполнить много подобных манипуляций с большими наборами данных, вы можете обнаружить, что решение по решению проблемы становится проще, как это:

library(tidyverse)
class_df <- data.frame(maths = c(1,2,3),
                       english = c(3,2,1),
                       class = c("yr_9", "yr_10", "yr_11"))
class_df <- class_df %>%
  mutate(maths = case_when(class == "yr_9" ~ maths +1, TRUE ~ as.numeric(maths)))

Проверьте этот ресурс для информации https://jules32.github.io/2016-07-12-Oxford/dplyr_tidyr/

Ура! * * 1013

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...