Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 基于数学计算创建新列_R - Fatal编程技术网

R 基于数学计算创建新列

R 基于数学计算创建新列,r,R,我有一个数据框,看起来像这样: df X24_TT_1.1 X135_121.FTT_2.1 X1055_121.FTT_3.1 0.14 0.84 0.92 0.88 0.06 0.08 0.91 0.17 0.85 0.08 0.9 0.11 0.11

我有一个数据框,看起来像这样:

df

X24_TT_1.1  X135_121.FTT_2.1    X1055_121.FTT_3.1
   0.14          0.84                 0.92
   0.88          0.06                 0.08
   0.91          0.17                 0.85
   0.08          0.9                  0.11
   0.11          0.16                 0.04
   0.83          0.1                  0.87
X24_TT_1.1  X135_121.FTT_2.1    X1055_121.FTT_3.1   X24_TT_1.2_P    X135_121.FTT_2.2_P  X1055_121.FTT_3.2_P
0.14              0.84               0.92              3.91            708.75             12132.50
0.88              0.06               0.08            176.00              8.62             91.74
0.91              0.17               0.85            242.67             27.65             5978.33
0.08              0.9                0.11              2.09           1215.00             130.39
0.11              0.16               0.04              2.97             25.71              43.96
0.83              0.1                0.87            117.18             15.00            7060.38
我想创建一个新的列,该列的名称与最后添加的“\u p”相同,计算公式为:

对于列X24_TT_1.1=24*(0.14/(1-0.14))

对于列X135_121.FTT_2.1=135*(0.84/(1-0.84))

对于X1055_121列,FTT_3.1=1055*(0.92/(1-0.92))

最后应该是这样的:

df

X24_TT_1.1  X135_121.FTT_2.1    X1055_121.FTT_3.1
   0.14          0.84                 0.92
   0.88          0.06                 0.08
   0.91          0.17                 0.85
   0.08          0.9                  0.11
   0.11          0.16                 0.04
   0.83          0.1                  0.87
X24_TT_1.1  X135_121.FTT_2.1    X1055_121.FTT_3.1   X24_TT_1.2_P    X135_121.FTT_2.2_P  X1055_121.FTT_3.2_P
0.14              0.84               0.92              3.91            708.75             12132.50
0.88              0.06               0.08            176.00              8.62             91.74
0.91              0.17               0.85            242.67             27.65             5978.33
0.08              0.9                0.11              2.09           1215.00             130.39
0.11              0.16               0.04              2.97             25.71              43.96
0.83              0.1                0.87            117.18             15.00            7060.38

我希望动态执行此操作,因为dataset有100多列

您可以使用$sign向数据框添加新列,执行以下操作:

df$X24_TT_1.1_P <- 24 * (df$X24_TT_1.1/(1-df$X24_TT_1.1))
df$X24_TT_1.1_P

试试这个:

x <- sapply(names(df), function(x) {
            s <- strsplit(x, "_")[[1]][1]
            s <- substring(s, 2, nchar(s))
            as.numeric(s)*(df[,x]/(1 - df[,x]))
     })


colnames(x) <- paste0(colnames(df), "_P")
cbind(df, round(x,2))

  X24_TT_1.1 X135_121.FTT_2.1 X1055_121.FTT_3.1 X24_TT_1.1_P X135_121.FTT_2.1_P X1055_121.FTT_3.1_P
1       0.14             0.84              0.92         3.91             708.75            12132.50
2       0.88             0.06              0.08       176.00               8.62               91.74
3       0.91             0.17              0.85       242.67              27.65             5978.33
4       0.08             0.90              0.11         2.09            1215.00              130.39
5       0.11             0.16              0.04         2.97              25.71               43.96
6       0.83             0.10              0.87       117.18              15.00             7060.38

x我想动态执行此操作,因为数据集的列数超过100列。我想动态执行此操作,因为数据集的列数超过100列columns@ROY查看我的更新我希望动态执行此操作,因为数据集有100多个columns@Roy我已经更新了