我正在尝试创建一个新变量(var5),它根据因子变量(var4)的级别从数据帧中其他数字变量之一(var1,var2或var3)中获取值
variables=data.frame(var1=c(2,3,4,5), var2=c(20,30,40,50), var3=c(200,300,400,500), var4=c('var1','var2','var3','var1'))
变数
var1 var2 var3 var4
1 2 20 200 var1
2 3 30 300 var2
3 4 40 400 var3
4 5 50 500 var1
预期结果将是这样的:
var1 var2 var3 var4 var5
1 2 20 200 var1 2
2 3 30 300 var2 30
3 4 40 400 var3 400
4 5 50 500 var1 5
我找不到解决的办法。
最佳答案
我确定有人可以提出一些更好的建议,但是dplyr::case_when()
可以完成工作:
library(dplyr)
data.frame(
var1 = c(2, 3, 4, 5),
var2 = c(20, 30, 40, 50),
var3 = c(200, 300, 400, 500),
var4 = c('var1', 'var2', 'var3', 'var1')) %>%
mutate(var5 = case_when(var4 == "var1" ~ var1,
var4 == "var2" ~ var2,
var4 == "var3" ~ var3))