我正在尝试创建一个简单的data.frame,使用FOR LOOP将'1'的值添加到当前data.frame中所有行内的每个值中。
我当前的循环只是返回相同的值。这只是我一个愚蠢的错误吗?
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
...
谢谢。
答案 0 :(得分:0)
这应该为您工作。它使用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。
编辑:
我的初始函数还将在您的year
列中加1,因此您可能想要这样做
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"
。