【发布时间】:2018-11-23 19:09:16
【问题描述】:
我有一个大数据框,想创建一个依赖于其他两个变量的新变量。
这是一个简短的例子:
v1 <- rep(c(1:5),each=3)
v2 <- c('X','A','Y','X','Y','B','X','Y','C','X','Y','C','X','Y','A')
dat <- data.frame(v1,v2)
#create a new var which contains either A,B, or C depending on what is found in v2
#desired output
v3 <- rep(c('A','B','C','C','A'),each=3)
data.frame(v1,v2,v3)
关于如何用短代码做到这一点的任何想法?
我试过这个,但离解决方案还很远。遗漏太多。 :(
dat$v3[dat$v2 %in% c('A','B','C')] <- dat$v2[dat$v2 %in% c('A','B','C')]
【问题讨论】:
-
像
with(dat, ave(v2, v1, FUN = function(i) tail(i, 1)))这样的东西应该这样做,因为订单总是如图所示 -
据我所知
v3仅取决于一个变量。规则似乎是 1 -> A、2 -> B 等等。 -
比较复杂。我将添加另一行;)
-
您能否也添加您失败的尝试?
-
dplyr的case_when()或ifelse()语句非常适合这里。但是,由于您没有提供确切的条件,因此很难编写示例。
标签: r