R 将具有缩放值的新列添加到列表中的所有数据帧
我有一个数据帧列表,所有数据帧都包含一个用户列和另一个名为“VD”的列。我想使用VD列的缩放值向列表中的所有数据帧“VD_z”添加一个新列R 将具有缩放值的新列添加到列表中的所有数据帧,r,R,我有一个数据帧列表,所有数据帧都包含一个用户列和另一个名为“VD”的列。我想使用VD列的缩放值向列表中的所有数据帧“VD_z”添加一个新列 df1 <- data.frame(VD = 1:3, user=letters[1:3]) df2 <- data.frame(VD = 4:6, user=letters[4:6]) filelist <- list(df1,df2) df1我们可以使用mapfrompurr循环通过列表和mutate创建“VD_z” library(
df1 <- data.frame(VD = 1:3, user=letters[1:3])
df2 <- data.frame(VD = 4:6, user=letters[4:6])
filelist <- list(df1,df2)
df1我们可以使用map
frompurr
循环通过列表
和mutate
创建“VD_z”
library(tidyverse)
filelist %>%
map( ~ .x %>%
mutate(VD_z = scale(VD)))
或者使用base R
和lappy/transform
filelist1 <- lapply(filelist, transform, VD_z = scale(VD))
filelist1
#[[1]]
# VD user VD_z
#1 1 a -1
#2 2 b 0
#3 3 c 1
#[[2]]
# VD user VD_z
#1 4 d -1
#2 5 e 0
#3 6 f 1
A数据。表
方法可以
library(data.table)
dd <- rbindlist(filelist, idcol = 'id')[, VD_z := scale(VD), by = id]
# id VD user VD_z
#1: 1 1 a -1
#2: 1 2 b 0
#3: 1 3 c 1
#4: 2 4 d -1
#5: 2 5 e 0
#6: 2 6 f 1
这就给了,
filelist1 <- lapply(filelist, transform, VD_z = scale(VD))
filelist1
#[[1]]
# VD user VD_z
#1 1 a -1
#2 2 b 0
#3 3 c 1
#[[2]]
# VD user VD_z
#1 4 d -1
#2 5 e 0
#3 6 f 1
filelist1 <- lapply(filelist, function(df) {df$VD_z <- scale(df$VD); df})
library(data.table)
dd <- rbindlist(filelist, idcol = 'id')[, VD_z := scale(VD), by = id]
# id VD user VD_z
#1: 1 1 a -1
#2: 1 2 b 0
#3: 1 3 c 1
#4: 2 4 d -1
#5: 2 5 e 0
#6: 2 6 f 1
split(dd, dd$id)
$`1`
id VD user VD_z
1: 1 1 a -1
2: 1 2 b 0
3: 1 3 c 1
$`2`
id VD user VD_z
1: 2 4 d -1
2: 2 5 e 0
3: 2 6 f 1