Как добавить постоянное значение во все строки в data.frame, используя цикл For - PullRequest
0 голосов
/ 22 февраля 2019

Я пытаюсь создать простой data.frame, который добавляет значение '1' к каждому значению во всех строках моего текущего data.frame, используя FOR LOOP.

Мой текущий цикл простовозвращая одинаковые значения.Это просто глупая ошибка с моей стороны?

b<-as.data.frame(Base, nrow(length(Base)), ncol(5))
for(i in seq(names(Base))){
  j<-names(Base)[i]
  i + 1
}
b

Например, это оригинальные столбцы из data.frame Sales:

Year  A  B  C  D
2010  50 60 70 80
2011  10 44 28 20
2012  65 75 65 89
...

И моя цель:

Year  A  B  C  D
2011  51 61 71 81
2012  11 45 29 21
2013  66 76 66 90
...

Заранее спасибо.

1 Ответ

0 голосов
/ 22 февраля 2019

Это должно работать для вас.Он использует mutate_if функцию из dplyr в tidyverse, а не в цикле for, но логика та же.

library(tidyverse)

df <- tibble(
  a = c(1:10),
  b = c(11:20),
  c = c(21:30)
)

df1 <- df %>%
  mutate_if(is.numeric, function(x) x+1)

Первый аргумент выберет все числовые столбцы в ваших данных,затем второй аргумент определяет функцию, которая в данном случае просто добавляет 1.

РЕДАКТИРОВАТЬ:

Моя начальная функция также добавит 1 к вашему столбцу year, так что вы можете захотетьсделайте это вместо

library(tidyverse)

df <- tibble(
  a = c(1:10),
  b = c(11:20),
  c = c(21:30)
)

df1 <- df %>%
  mutate_at(vars(-matches("a")), function(x) x+1)

За исключением случаев, когда вы хотите заменить "a" в последней строке на "year" в вашем коде.

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