代码之家  ›  专栏  ›  技术社区  ›  Krantz

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

  •  0
  • Krantz  · 技术社区  · 6 年前

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

    • 创建名为的新变量 division
    • 排成一行 r_n 变量的 dT$division 对应行值的除法结果 R_n 属于 dT$result1 通过 每行的值 结果1 对于 dt$treat == A
    • 创建名为的新变量 operation
    • 对于变量的每一行 操作 执行 dT$operation = (2*(dT$division-1))/(2*(dT$division-1)+1)

    在哪里? n 在里面 R_n 是数据帧中每行的数目,并从中获取值 1 to N ,n是数据帧中观察值或行的总数。

    样本数据

    (注:编辑后添加变量) id 创建所需功能至关重要)

    dT = read.table(header = TRUE, text = "
    id group treat result1
    1 0 A 0.1438 
    2 0 A 0.237 
    3 0 B 0.2774 
    4 0 B 0.2774 
    5 0 B 0.2093 
    6 0 C 0.1206 
    7 0 C 0.1707 
    8 0 C 0.0699 
    9 0 C 0.1351 
    10 1 C 0.1206 
    11 1 A 0.1438 
    12 1 A 0.237 
    13 1 B 0.2774 
    14 1 B 0.2774 
    15 1 B 0.2093 
    16 1 C 0.1206 
    17 1 C 0.1707 
    18 1 C 0.0699
    19 1 C 0.1351 
    20 1 C 0.1206")
    

    头输出

    (注意:这是从原始数据中随机抽取的行样本,这些数据是为了便于说明概念)

    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
    

    #预期产量

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

    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
    

    提前感谢您的帮助。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Jorge Lopez    6 年前
    1. 创建名为division的新变量
    2. 在变量dt$除法的每一行r_n中,将dt$result1对应行r_的值除以dt$result1对应行的值得出的结果,除以dt$treat=a的每一行dt$result1的值。

    回答步骤1和2

      division<-dT$result1/dT$result1[dT$treat=="A"]  
    
      dT<-cbind(dT,division)
    
    1. 创建名为operation的新变量

    2. 对于变量操作的每一行,执行dt$operation=(2*(dt$division-1))/(2*(dt$division-1)+1)

    回答3和4

    dT$operation<-(2*(dT$division-1))/(2*(dT$division-1)+1)