Loo*_*eft 8 variables r transform
我有一个包含标记为A,B和C的列的数据框.我想添加从现有列和新列本身计算的新列.为此,我尝试使用如下变换函数:
Data = transform(Data,
NewD = A + B,
NewE = C * NewD
)
Run Code Online (Sandbox Code Playgroud)
但是这给出了一个错误:
eval中的错误(expr,envir,enclos):找不到对象'NewD'
我也试过像这样的cbind函数:
NewD = Data$A + Data$B,
NewE = Data$C * New$D
Data=cbind(Data,NewD,NewE)
Run Code Online (Sandbox Code Playgroud)
但是当附加列(函数)的数量增加时,它变得很麻烦.
如何在转换函数中引用NewD,或者是否有更好的方法来应用这样的多个函数.我希望Data包含A,B,C,NewD和NewE列,而不必多次调用转换函数.
也许这样的事情
d <- data.frame(a=1:5, b=6:10)
transform(d, c=tmp <- a+b, e=b*tmp)
Run Code Online (Sandbox Code Playgroud)
可以?
哈德利mutate在他的plyr包装中有一个功能就是这样.这是@Karsten使用的相同示例mutate.我觉得mutate代码对于这些任务更具可读性,因为它不需要任何临时赋值.
require(plyr)
d = data.frame(a = 1:5, b = 6:10)
mutate(d, c = a + b, d = b * c, e = c * d)
Run Code Online (Sandbox Code Playgroud)