基于 R 中的逻辑测试创建递增标签
creating an incremented label based on a logical test in R
假设我在数据框中有一个向量 data
,包含 0 和 1,如下所示:
v1<- c(0,0,1,1,0,1,0)
我想要一个新的向量,其值是a或b,基于v1
中的值是0还是1。此外,我希望第一个a是a1,第二个是a2 .我希望第一个 b 为 b1,第二个为 b2,等等。输出向量 v2
看起来像
c(a1,a2,b1,b2,a3,b3,a4)
我知道我可以做一个简单的 ifelse 语句,这样
data$v2 <- ifelse(data$v1=0,'a','b')
但是,我不知道如何添加一个递增的整数。
一种可能:
paste0(letters[v1 + 1], ave(v1, v1, FUN = seq_along))
# [1] "a1" "a2" "b1" "b2" "a3" "b3" "a4"
您可以使用 c("a", "b")
而不是 letters
。但是,letters
= 7 次击键对比 c("a", "b")
= 11 次击键和 6 次 shift
。
假设我在数据框中有一个向量 data
,包含 0 和 1,如下所示:
v1<- c(0,0,1,1,0,1,0)
我想要一个新的向量,其值是a或b,基于v1
中的值是0还是1。此外,我希望第一个a是a1,第二个是a2 .我希望第一个 b 为 b1,第二个为 b2,等等。输出向量 v2
看起来像
c(a1,a2,b1,b2,a3,b3,a4)
我知道我可以做一个简单的 ifelse 语句,这样
data$v2 <- ifelse(data$v1=0,'a','b')
但是,我不知道如何添加一个递增的整数。
一种可能:
paste0(letters[v1 + 1], ave(v1, v1, FUN = seq_along))
# [1] "a1" "a2" "b1" "b2" "a3" "b3" "a4"
您可以使用 c("a", "b")
而不是 letters
。但是,letters
= 7 次击键对比 c("a", "b")
= 11 次击键和 6 次 shift
。