首页 > 解决方案 > 如何使用 R 中的计算在数据框中添加新列?

问题描述

我想添加一个带有计算的新列。在下面的数据框中,

Env<- c("High_inoc","High_NO_inoc","Low_inoc", "Low_NO_inoc")
CV1<- c(30,150,20,100)
CV2<- c(74,99,49,73)
CV3<- c(78,106,56,69)
CV4<- c(86,92,66,70)
CV5<- c(74,98,57,79)

Data<-data.frame(Env,CV1,CV2,CV3,CV4,CV5)

Data$Mean <- rowMeans(Data %>% select(-Env))
Data <- rbind(Data, c("Mean", colMeans(Data %>% select(-Env))))

在此处输入图像描述

我想添加一个新的列名 'Env_index' 计算 {'mean' 列的每个值 - 总体平均值 ( 76.3 ) 例如 68.4 - 76.3 , 109- 76.3 ,... 78.2 - 76.3

所以,我这样做了,得到了我想要的。

Data$Env_index <- c(68.4-76.3,109-76.3,49.6-76.3,78.2-76.3, 76.3-76.3)

在此处输入图像描述

但是,我想直接用代码计算,所以如果我这样编码,

Data$Env_index <- with (data, data$Mean - 76.3)

它会产生错误。能告诉我怎么计算吗?

谢谢,

标签: rcalculated-columns

解决方案


要使计算动态化,这将适用于您可以执行的任何数据:

Data$Mean <- as.numeric(Data$Mean)
Data$Env_index <- Data$Mean - Data$Mean[nrow(Data)]
Data

#           Env CV1   CV2   CV3  CV4 CV5  Mean Env_index
#1    High_inoc  30    74    78   86  74  68.4      -7.9
#2 High_NO_inoc 150    99   106   92  98 109.0      32.7
#3     Low_inoc  20    49    56   66  57  49.6     -26.7
#4  Low_NO_inoc 100    73    69   70  79  78.2       1.9
#5         Mean  75 73.75 77.25 78.5  77  76.3       0.0

Data$Mean[nrow(Data)]将选择 的最后一个值Data$Mean


推荐阅读