gpt4 book ai didi

r - 循环更改多个数据框

转载 作者:行者123 更新时间:2023-12-04 00:45:29 25 4
gpt4 key购买 nike

例如,我有这三个数据集(在我的例子中,它们更多并且有很多变量):

data_frame1 <- data.frame(a=c(1,5,3,3,2), b=c(3,6,1,5,5), c=c(4,4,1,9,2))
data_frame2 <- data.frame(a=c(6,0,9,1,2), b=c(2,7,2,2,1), c=c(8,4,1,9,2))
data_frame2 <- data.frame(a=c(0,0,1,5,1), b=c(4,1,9,2,3), c=c(2,9,7,1,1))

在每个数据框上,我想添加一个变量,该变量是由该数据框上现有变量的转换产生的。我会通过循环来做到这一点。例如:

datasets <- c("data_frame1","data_frame2","data_frame3")
vars <- c("a","b","c")
for (i in datasets){
for (j in vars){
# here I need a code that create a new variable with transformed values
# I thought this would work, but it didn't...
get(i)$new_var <- log(get(i)[,j])
}
}

你对此有什么有效的建议吗?

此外,如果也可以通过字符串分配新列名(在本例中为 new_var),那对我来说会很棒,这样我就可以通过另一个为循环嵌套在另外两个中。

希望我没有太纠结地解释我的问题。

提前致谢。

最佳答案

你可以把你的数据帧放在一个列表中,然后使用 lapply 来一个一个地处理它们。所以在这种情况下不需要使用循环。

例如你可以这样做:

data_frame1 <- data.frame(a=c(1,5,3,3,2), b=c(3,6,1,5,5), c=c(4,4,1,9,2))
data_frame2 <- data.frame(a=c(6,0,9,1,2), b=c(2,7,2,2,1), c=c(8,4,1,9,2))
data_frame3 <- data.frame(a=c(0,0,1,5,1), b=c(4,1,9,2,3), c=c(2,9,7,1,1))

ll <- list(data_frame1,data_frame2,data_frame3)
lapply(ll,function(df){
df$log_a <- log(df$a) ## new column with the log a
df$tans_col <- df$a+df$b+df$c ## new column with sums of some columns or any other
## transformation
### .....
df

})

dataframe1 变成:

[[1]]
a b c log_a tans_col
1 1 3 4 0.0000000 8
2 5 6 4 1.6094379 15
3 3 1 1 1.0986123 5
4 3 5 9 1.0986123 17
5 2 5 2 0.6931472 9

关于r - 循环更改多个数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14429686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com