R 如何创建一个新变量,该变量包含基于其他选定变量的三个计算';价值观
我想创建一个新变量,它包含三个基于选定列的值的计算。 以下是我的数据帧示例:R 如何创建一个新变量,该变量包含基于其他选定变量的三个计算';价值观,r,dataframe,R,Dataframe,我想创建一个新变量,它包含三个基于选定列的值的计算。 以下是我的数据帧示例: dat <- read.table(text = " cats birds wolfs snakes 0 3 9 7 1 3 8 7 1 1 2 3 0 1 2 3 0
dat <- read.table(text = " cats birds wolfs snakes
0 3 9 7
1 3 8 7
1 1 2 3
0 1 2 3
0 1 2 3
1 6 1 1
0 6 1 1
1 6 1 1 ",header = TRUE)
欢迎任何想法尝试以下方法:
dat$full_calc <- with(dat, ifelse(wolfs == 1, 1,
ifelse(wolfs == 2, 20,
ifelse(wolfs >= 8 & snakes == 7, 88, 999))))
dat$full_calc=8&snakes=7,88999)))
您可以将多个ifelse
嵌套在彼此内部。尝试以下方法:
dat$full_calc <- with(dat, ifelse(wolfs == 1, 1,
ifelse(wolfs == 2, 20,
ifelse(wolfs >= 8 & snakes == 7, 88, 999))))
dat$full_calc=8&snakes=7,88999)))
您可以将多个
ifelse
嵌套在彼此内部。如果您愿意使用data.table
包,则更新表的功能非常透明且易于理解
#Bring in data.table
require(data.table)
setDT(dat)
#Develop full_calc
dat[ , full_calc := 999]
dat[wolfs==1 , full_calc := 1]
dat[wolfs==2 , full_calc := 20]
dat[wolfs>=8 & snakes==7 , full_calc := 88]
如果您愿意使用
data.table
包,那么更新表的功能是非常透明和可理解的
#Bring in data.table
require(data.table)
setDT(dat)
#Develop full_calc
dat[ , full_calc := 999]
dat[wolfs==1 , full_calc := 1]
dat[wolfs==2 , full_calc := 20]
dat[wolfs>=8 & snakes==7 , full_calc := 88]
您也可以尝试:
indx <- with(dat, cbind(wolfs==1, wolfs==2, wolfs>=8 & snakes==7))
dat$full_calc <- c(cbind(indx, !rowSums(indx))%*%c(1,20,88,999))
dat$full_calc #please check the first value in your expected output
#[1] 88 88 20 20 20 1 1 1
indx=8&snakes=7))
dat$full_calc您也可以尝试:
indx <- with(dat, cbind(wolfs==1, wolfs==2, wolfs>=8 & snakes==7))
dat$full_calc <- c(cbind(indx, !rowSums(indx))%*%c(1,20,88,999))
dat$full_calc #please check the first value in your expected output
#[1] 88 88 20 20 20 1 1 1
indx=8&snakes=7))
dat$full_计算