首页 > 解决方案 > R:通过应用不同的公式计算数据集的新变量

问题描述

我有一个具有以下结构的数据框“数据”:

structure(list(age = c(45, 4, 32, 45), sex = c(1, 0, 1, 0), height = c(165, 
178, 145, 132), weight = c(65, 73, 60, 45)), row.names = c(NA, 
-4L), class = c("tbl_df", "tbl", "data.frame"))

我想在这个 data.frame 中添加两个新变量(var1,var2),应该使用以下两个公式计算:

var1 = 年龄*身高 +(如果性别 ==1 则为 4 或如果性别 ==0 则为 2)

var2 = 身高*体重 +(如果年龄>40 则为 1,如果年龄=<40 则为 2)

我在将两个变量添加到数据框时都遇到了问题,无论是在应用函数时(我试图构建一个函数,但似乎只能应用于单个值而不是所有行的所有值)。

任何人都可以帮助我吗?

标签: r

解决方案


akrun的使用布尔算术的建议是一个很好的建议,但你也可以简单地做一个布尔版本的你自己的表达式,用乘法代替 if statements.s(对 "=<" 进行温和的编辑到 "<="

data <- structure(list(age = c(45, 4, 32, 45), sex = c(1, 0, 1, 0), height = c(165, 178, 145, 132), weight = c(65, 73, 60, 45)), row.names = c(NA,                                                                                                                                           -4L), class = c("tbl_df", "tbl", "data.frame")) 

data <- within(data, {var1 = age*height + 4*(sex==1) + 2 *(sex==0); 
                      var2 = height*weight + (age>40) + 2 *(age <= 40)})
#----
> data
  age sex height weight  var2 var1
1  45   1    165     65 10726 7429
2   4   0    178     73 12996  714
3  32   1    145     60  8702 4644
4  45   0    132     45  5941 5942

由于两组条件各自不相交,因此“不合格”选择项将分别为 0。


推荐阅读