我有一个这样的转换后的data.table:
name <- c("Bob","Mary","Jane","Kim")
weight <- c(60,65,45,55)
height <- c(170,165,140,135)
dft <- data.table(name,weight,height)
dft <- data.table (dft[,.(name)] , dft[, weight %*% t(weight)])
names(dft) <- c("name", str_c("tau",1:4))
现在,我首先将tau12 = tau1 * tau2
相乘,并计算包括tau12
在内的所有五列的行和。
如果我使用
dft[, `:=`(tau12 = tau1 * tau2,
sum1 = lapply(.SD, sum) ) , .SDcols = patterns("^tau") ]
但是,sum1
只计算四列的和,不包括列tau12
。
我想知道在这种情况下如何计算和tau1+tau2+tau3+tau4+tau12
?这与dplyr::mutate
所做的不同,新生成的变量可以包含在后续操作中。
发布于 2021-03-19 21:48:51
像这样的东西?
> dft[, tau12 := tau1 * tau2][, .(rowS = rowSums(.SD)), name, .SDcols = patterns("^tau")]
name rowS
1: Bob 14053500
2: Mary 16492125
3: Jane 7907625
4: Kim 11809875
https://stackoverflow.com/questions/66709288
复制相似问题