R 创建一个函数,通过对另一个变量的级别进行算术运算来比较变量的值

R 创建一个函数,通过对另一个变量的级别进行算术运算来比较变量的值,r,function,data.table,tidyverse,arithmetic-expressions,R,Function,Data.table,Tidyverse,Arithmetic Expressions,我需要帮助来创建执行以下操作的函数: 创建一个名为division 将变量dT$division的每一行r\u n将dT$result1的相应行r\u n的值除以 dT$treat==A的dT$result1的每一行的值 创建一个名为operation 对于变量的每一行操作执行 dT$operation=(2*(dT$division-1))/(2*(dT$division-1)+1) 其中r\u n中的n是数据帧中每行的编号,取值范围为1到n,n是数据帧中观察值或行的总数 #样本数据 (注

我需要帮助来创建执行以下操作的函数:

  • 创建一个名为
    division
  • 将变量
    dT$division
    的每一行
    r\u n
    dT$result1的相应行
    r\u n
    的值除以
    dT$treat==A的
    dT$result1
    的每一行的值
  • 创建一个名为
    operation
  • 对于变量的每一行
    操作
    执行
    dT$operation=(2*(dT$division-1))/(2*(dT$division-1)+1)
其中
r\u n
中的
n
是数据帧中每行的编号,取值范围为
1到n
,n是数据帧中观察值或行的总数

#样本数据

(注意:编辑以添加变量
id
,该变量对于创建所需函数至关重要)

#头部输出

(注:这是从原始数据中随机选取的行样本,以便于对概念进行说明)

#预期产出

(注意:对于dT$treat.denominator A2和A3,此示例仅显示视觉效果-因为我需要尽快发布预期输出;这意味着我仅为dT$treat.denominator A1计算变量dT$division和dT$operation的实际值)

提前感谢您的帮助

  • 创建一个名为division的新变量
  • 在变量dT$division的每一行r_n中放入dT$result1的对应行r_n的值除以dT$treat==A的每一行dT$result1的值的结果
  • 回答步骤1和步骤2

      division<-dT$result1/dT$result1[dT$treat=="A"]  
    
      dT<-cbind(dT,division)
    

    你的预期结果是什么?嗨,@onyanbu。刚刚编辑了问题,按要求添加了预期的输出。提前谢谢你的帮助。谢谢,@JorgeLopez。但是它没有产生预期的输出。你好,克兰茨,我是按照你的指示来做的。您的要求中没有进一步的输入。如果输出结果与您的预期结果不一致,请再次检查您的指示。是的。你是对的。我可能会在查看说明后发布另一个问题。我会让你知道的。非常感谢你的回答。非常有用。
    
    id group treat result1
    1 0 A 0.014
    2 0 A 0.02
    3 0 B 0.20
    4 1 A 0.14
    5 1 B 0.27
    
    id group treat result1 treat.numerator treat.denominator division operation
    1 0 A 0.01 A1 A1 1.00 0.00
    2 0 A 0.02 A2 A1 1.64 0.56
    3 0 B 0.20 B3 A1 20.00 0.97
    4 1 A 0.14 A4 A1 14.00 0.96
    5 1 B 0.27 B5 A1 27.00 0.98
    1 0 A 0.01 A1 A2 1.00 0.00
    2 0 A 0.02 A2 A2 1.64 0.56
    3 0 B 0.20 B3 A2 20.00 0.97
    4 1 A 0.14 A4 A2 14.00 0.96
    5 1 B 0.27 B5 A2 27.00 0.98
    1 0 A 0.01 A1 A3 1.00 0.00
    2 0 A 0.02 A2 A3 1.64 0.56
    3 0 B 0.20 B3 A3 20.00 0.97
    4 1 A 0.14 A4 A3 14.00 0.96
    5 1 B 0.27 B5 A3 27.00 0.98
    
      division<-dT$result1/dT$result1[dT$treat=="A"]  
    
      dT<-cbind(dT,division)
    
    dT$operation<-(2*(dT$division-1))/(2*(dT$division-1)+1)