说我有一些数据,我想对多个变量做一个循环,在其中我从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))
答案 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]