r - 如何使用 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)
它会产生错误。能告诉我怎么计算吗?
谢谢,
解决方案
要使计算动态化,这将适用于您可以执行的任何数据:
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
。
推荐阅读
- phaser-framework - 使用 Phaser.io 中的 matter.js 使身体向前/朝向一个点
- node.js - 为什么 npm-remote-ls 命令返回的结果比 babel-loader 包的 Yarn install 命令多?
- laravel - 在 Laravel 中注册后,我在 Builder::getAuthIdentifierName() 中遇到错误
- reactjs - 反应笑话测试。无法使用 google js api 读取未定义的属性“地图”
- nginx - nginx 反向代理在删除其配置文件后仍然有效
- c# - DataGrid中的ComboxBox未在WPF中显示列表
- c# - 无法将类型字符串隐式转换为 int、枚举
- java - 在 JCombo Box Java 中将文本添加到字符串
- ios - 如何继续填充 UITableView
- python - 蒙特卡罗模拟预测波动率