使用lapply在旧列的基础上创建新列 [英] Using lapply to create new columns based on old columns
本文介绍了使用lapply在旧列的基础上创建新列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的数据如下:
DF <- structure(list(No_Adjusted_Gross_Income = c(183454, 241199, 249506
), NoR_from_1_to_5000 = c(1035373, 4272260, 1124098), NoR_from_5000_to_10000 = c(319540,
4826042, 1959866)), row.names = c(NA, -3L), class = c("data.table",
"data.frame"))
val <- c(2500.5, 7500)
vn <- c("AGI_from_1_to_5000", "AGI_from_5000_to_10000")
No_Adjusted_Gross_Income NoR_from_1_to_5000 NoR_from_5000_to_10000
1: 183454 1035373 319540
2: 241199 4272260 4826042
3: 249506 1124098 1959866
我想基于列2和3创建新列,并使用 vn
中的名称乘以 val
中的值.我尝试这样做,如下所示:
I would like to create new columns, based on column 2 and 3, multiplied with the values from val
, using the names from vn
. I tried to do it as follows:
DF[,2:3] <- lapply(DF[,2:3], vn := val*DF[,2:3])
但这不起作用.
所需的输出:
DF <- setDT(DF)[, vn[1]:=val[1]*DF[,2]]
DF <- setDT(DF)[, vn[2]:=val[2]*DF[,3]]
DFout <- structure(list(No_Adjusted_Gross_Income = c(183454, 241199, 249506
), NoR_from_1_to_5000 = c(1035373, 4272260, 1124098), NoR_from_5000_to_10000 = c(319540,
4826042, 1959866), AGI_from_1_to_5000 = c(2588950186.5, 10682786130,
2810807049), AGI_from_5000_to_10000 = c(2396550000, 36195315000,
14698995000)), row.names = c(NA, -3L), class = c("data.table",
"data.frame"))
No_Adjusted_Gross_Income NoR_from_1_to_5000 NoR_from_5000_to_10000 AGI_from_1_to_5000 AGI_from_5000_to_10000
1: 183454 1035373 319540 2588950187 2396550000
2: 241199 4272260 4826042 10682786130 36195315000
3: 249506 1124098 1959866 2810807049 14698995000
推荐答案
这应该有效.. lapply()
不需要
library( data.table )
setDT( DF )
DF[, (var) := as.data.table ( t( t( DF[, 2:3] ) * val ) ) ][]
# No_Adjusted_Gross_Income NoR_from_1_to_5000 NoR_from_5000_to_10000 AGI_from_1_to_5000 AGI_from_5000_to_10000
# 1: 183454 1035373 319540 2588950187 2396550000
# 2: 241199 4272260 4826042 10682786130 36195315000
# 3: 249506 1124098 1959866 2810807049 14698995000
这篇关于使用lapply在旧列的基础上创建新列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文