如何循环在data.table中?

问题描述

我是R的新手,想知道是否有人可以提供帮助?我有200多个列和一个加权列,因此我需要将每个列与其相关的权重相乘以创建新的加权列,以便进一步分析数据。每个列都有多个级别,因此我的性别为2(男,女例)。我如何遍历所有列以创建新变量,就像我在下面为一列所做的那样?

DF[,gender_w:=gender*weight/gender]
    

DF[,lapply(.SD,sum,na.rm=T),by= gender,.SDcols=c(all_weighted_column_names)]

预先感谢您的任何建议。

编辑-更多信息

    DF <- (Gender = c(1,2,1,2),Age_group = c(1,5,4,3)
Question1 = c(1,1)
Question2 = c(0,1)
Weight = c(2,3,5))

我必须发布虚拟变量,但希望这可以帮助您看到图片

在此示例中,我需要每个变量中每个组的总和,但需要首先对其加权。因此,对于性别而言,如果1 = M而2 = F,那么我就不需要2个男性和3个女性,但是我需要将它们乘以它们相应的权重再相加。因此,我需要显示3位男性和13位女性。

In the age_group,instead of Age_group_1 = 1,Age_group_3 = 1,Age_group_4 = 1 and Age_group_5 = 2. I need to produce Age_group_1 = 2,Age_group_3 = 5,Age_group_4 = 1 and Age_group_5 = 8

有没有一种方法可以遍历所有列?我总共有+200,我想不出一种有效的方法

再次感谢您的帮助。

解决方法

您可以计算组件明智的乘积。 假设您有一个data.table

for

您现在可以使用来权衡x和y列

dt <- data.table(
  x = 1:10,y = 11:20,weight = 2
)

如果每列都有唯一的权重向量,这也将起作用。 请注意,这不是data.table语法,但保留了dt的data.table结构。