在转换中引用新列
我有一个数据框,其中的列标记为 A、B 和; C. 我想添加根据现有列和新列本身计算得出的新列。为了实现这一点,我尝试使用这样的转换函数:
Data = transform(Data,
NewD = A + B,
NewE = C * NewD
)
但这给出了一个错误:
eval(expr, envir, enclos) 中的错误:未找到对象“NewD”
我也尝试了这样的 cbind 函数:
NewD = Data$A + Data$B,
NewE = Data$C * New$D
Data=cbind(Data,NewD,NewE)
但是当附加列(函数)的数量增加时,它会变得很麻烦。
如何在变换函数中引用 NewD,或者是否有更好的方法来应用这样的多个函数。我希望数据包含列 A、B、C、NewD 和NewE 无需多次调用转换函数。
I have a dataframe with columns labeled A,B & C. I want to add new columns that are calculated from the existing columns AND the new columns themselves. To achieve this I tried using the transform function like this:
Data = transform(Data,
NewD = A + B,
NewE = C * NewD
)
But this gives an error:
Error in eval(expr, envir, enclos) : object 'NewD' not found
I also tried the cbind function like this:
NewD = Data$A + Data$B,
NewE = Data$C * New$D
Data=cbind(Data,NewD,NewE)
But it gets cumbersome when the number of additional columns(functions) grows.
How can I reference NewD inside the transform function, or is there a better way to apply multiple functions like this. I want Data to contain columns A, B, C, NewD & NewE without having to call the transform funciton numerous times.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
也许类似这样的事情
可以做到吗?
Maybe something like this
does it?
Hadley 在其
plyr
包中有一个mutate
函数,它正是执行此操作的。这是 @Karsten 使用mutate
使用的相同示例。我发现 mutate 代码对于此类任务更具可读性,因为它不需要内部任何临时分配。Hadley has a
mutate
function in hisplyr
package that does precisely this. Here is the same example used by @Karsten usingmutate
. I findmutate
code more readable for such tasks, as it does not require any temporary assignments inside.这里有几种方法。我们使用内置数据框
BOD
进行说明:within
my.transform
my.transform
已定义 此处并允许引用新列:Here are a couple of ways. We illustrate using the built in data frame
BOD
:within
my.transform
my.transform
is defined here and allows one to reference new columns: