我想找到第一次出现定义数字的行(例如2)?
例如:
group <- c("a", "a", "a", "a", "a", "b", "b", "b", "b", "b")
value <- c(1, 1, 2, 2, 1, 1, 2, 1, 2, 3)
GOAL <- c("FALSE", "FALSE", "TRUE", "FALSE", "FALSE", "FALSE", "TRUE", "FALSE", "FALSE", "FALSE")
data <- data.frame(group, value, GOAL)
data
在“GOAL”栏中将是结果。 感谢您的帮助。
答案 0 :(得分:2)
这种方式假设每个group
至少有一个2.尽管您的样本数据按组排序,但此处使用的方法并不依赖于此。
# given vector v, return vector of FALSEs, except at the first 2
f <- function(v) replace(logical(length(v)), which(v == 2)[1], TRUE)
transform(data, GOAL=as.logical(ave(value, group, FUN=f)))
# group value GOAL
# 1 a 1 FALSE
# 2 a 1 FALSE
# 3 a 2 TRUE
# 4 a 2 FALSE
# 5 a 1 FALSE
# 6 b 1 FALSE
# 7 b 2 TRUE
# 8 b 1 FALSE
# 9 b 2 FALSE
# 10 b 3 FALSE
如果您需要as.logical
/ TRUE
,则必须致电FALSE
,因为ave
始终返回数字向量。如果没有as.logical
,则会得到0和1。
答案 1 :(得分:0)
或者你可以做到
valueFirst <- 2
data[data$value==valueFirst,][1,]
然后你有了这一行。如果您只想要GOAL作为输出:
data[data$value==valueFirst,][1,3]