gpt4 book ai didi

在 attach() 中引用新定义的变量

转载 作者:行者123 更新时间:2023-12-04 09:18:08 25 4
gpt4 key购买 nike

我想对数据框的列进行许多修改。但是,由于需要大量的列和转换,我想避免一遍又一遍地使用数据框名称。

在 SAS 数据步中,在一个数据步中,您可以创建一个变量并在定义后立即引用它:

 data A;
set A;
varA = varB > 1;
varC = var A + varB;
....
run;

是否可以在 R 中执行此操作?

我能想到的一种方法是使用 attach(),然后创建数百个数组,然后在 detach() 之前对它们进行 cbind()。我知道许多 R 老手建议不要使用 attach()。但是我需要进行繁重的数据操作(数百个新变量),并且按顺序对每个变量调用 transform(df,) 会非常麻烦。

例如:

attach(A)
varA <- varB > 1
varC <- varA + varB
A <- cbind(varA, varB, varC)
detach()

但我不确定这是否是在 R 中执行此操作的最佳方法。

最佳答案

您可以使用plyrmutate

A <- data.frame(varB = 1:5)
library(plyr)
A <- mutate(A, varA = varB>1, varC = varA + varB)
A
varB varA varC
1 1 FALSE 1
2 2 TRUE 3
3 3 TRUE 4
4 4 TRUE 5
5 5 TRUE 6

base R 中的 within。请注意,within 以相反的顺序返回您创建的列。

A <- data.frame(varB = 1:5)
A <- within(A, {varA <- varB>1; varC <- varA + varB})
A
varB varC varA
1 1 1 FALSE
2 2 3 TRUE
3 3 4 TRUE
4 4 5 TRUE
5 5 6 TRUE

到目前为止,我最喜欢的是 data.table:=

DA <- data.table(varB = 1:5)


DA[,varA := varB >1 ][, varC := varA + varB]

DA
varB varA varC
1: 1 FALSE 1
2: 2 TRUE 3
3: 3 TRUE 4
4: 4 TRUE 5
5: 5 TRUE 6

目前 := 最容易在每次调用 [ 时只使用一次。有很多方法可以解决这个问题,但我认为 [ 调用的字符串并不难理解(而且它会比 mutate 或任何使用数据的方法快得多.frames.)

关于在 attach() 中引用新定义的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13617116/

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