Data:-
static_vector <- c(10,50,100,200,500,1000)
df <- data.frame(Id=c("A1","B1"),Value=c(5,200))
Id Value
1 A1 5
2 B1 200
df$Position <-static_vector[which(df$Value<=static_vector)]
Error:-
replacement has 4 rows, data has 2
Expected Output:-
Id Value Position
1 A1 5 1
2 B1 200 4
正如您所看到的,A1(5)的值小于或等于静态向量中的第一个元素,因此我需要将Position值设置为1.我尝试使用上面的哪个语句但是,它给我一个错误。
答案 0 :(得分:2)
您可以使用cut
功能:
df$Position <- as.integer(cut(df$Value, breaks = c(0, static_vector)))
df
Id Value Position
1 A1 5 1
2 B1 200 4
答案 1 :(得分:2)
如果您想使用which
,
df$Position <- sapply(df$Value, function(i) min(which(i <= static_vector)))
df
# Id Value Position
#1 A1 5 1
#2 B1 200 4