数据框计算,锚点单元格值到公式

Dataframe calculation, anchor cell value to formula

我想用下面的数据框做一些计算。一列的特定单元格中有一些值,我想根据第二列值复制它们,并将它们存储在新的第三列中:

x <- c ("1", "2","3", "4")
z <- (rep(x,5))
batch <- sort(z)
NDF <- rnorm(20, 10, 1); NDF <- signif (NDF, digits =3)
Fibre_analysis <- data.frame(batch, NDF)
Fibre_analysis$NDF[[1]] <- 10
Fibre_analysis$NDF[[6]] <- 100
Fibre_analysis$NDF[[11]] <- 1000
Fibre_analysis$NDF[[16]] <- 10000

这是我想要的 table:

   batch      NDF NEW_column
1      1    10.00         10
2      1    10.80         10
3      1     9.44         10
4      1    10.30         10
5      1    11.60         10
6      2   100.00        100
7      2     8.26        100
8      2     9.15        100
9      2     9.40        100
10     2     8.53        100
11     3  1000.00       1000
12     3     9.41       1000
13     3     9.20       1000
14     3    10.30       1000
15     3     9.32       1000
16     4 10000.00      10000
17     4    11.20      10000
18     4     7.33      10000
19     4     9.34      10000
20     4    11.00      10000

我希望在数据框中创建一个新列,$NDF 中的绝对单元格值必须针对 $batch 的每个值进行更改。

因为我需要多次使用这个过程,所以我创建了以下函数:

batch_Function <- function (x,y){
        ifelse (x =="1", y[[1]],
                ifelse (x =="2", y[[6]],
                        ifelse (x =="3", y[[11]],
                                y[[16]] )))
        print (y)
}

当我调用函数时:

Fibre_analysis$NEW_column <- batch_Function ( Fibre_analysis$batch , Fibre_analysis$NDF )

我希望 $NEW_column 看起来像这样:

x <- c(10,100,1000,10000)
NEW_column <- rep(x, each=5)

而它是 $NDF.

的完全相同的副本

唯一必要的更改是删除 print(y),因为它不允许 return 实际结果:

batch_Function <- function (x, y) {
  ifelse (x =="1", y[[1]],
          ifelse (x =="2", y[[6]],
                  ifelse (x =="3", y[[11]],
                          y[[16]] )))
}

batch_Function (Fibre_analysis$batch , Fibre_analysis$NDF )
#  [1]    10    10    10    10    10   100   100   100   100   100  1000  1000  1000  1000
# [15]  1000 10000 10000 10000 10000 10000

如果你还想要print(y),你可以把它放在batch_Function的开头。