为R中的许多列创建新变量

时间:2018-08-14 12:35:31

标签: r loops dataframe recode

说我有一些数据,我想对多个变量做一个循环,在其中我从oldvariable中减去“ 1”,并创建一个新变量,将“ p”添加到原始变量名称中。这是一些数据。所以说我有var1和var2并想创建var1p和var2p,其中var1p = var1-1。如何为很多变量循环呢?数据下方是我的尝试,但未完成任务。我可以减去“ 1”,但不确定如何用这些值将新变量名附加到df中。

df <- read.table(text =
                   "id var1 var2 var2p  var3p group
                 1  12    3    11   2    1
                 2  8     6    7   5    1
                 3  25    30   24   5    2
                 4  26    31   25   30    2
                 5  22    29   21   28    2", header = T)


new_data <- data.frame(lapply(df, function(x) x-1))

2 个答案:

答案 0 :(得分:4)

在基数R中,我们可以创建一个具有列的变量来选择(my $first_val = $AoAoA[0][0][0]; # 'a' ,并仅从这些列中减去-1,然后在其名称中添加“ p”以创建新列。

cols

答案 1 :(得分:2)

我们可以使用mutate_at中的dplyr根据对感兴趣的列的计算来创建新列

library(dplyr)
df %>% 
    mutate_at(vars(starts_with('var')), funs(p = .-1))

或使用data.table

library(data.table)
nm1 <- grep("var", names(df))
setDT(df)[, (nm1) := .SD - 1, .SDcols = nm1]