我有一个数据帧列
df$col1=(1,2,3,4,5,6,7,8,9,...,500000)和向量
vc<-c(1,2,4,5,7,8,10,...,499999)如果我比较这两个向量,第二个向量有一些缺失的值,我如何可以插入丢失值的0,例如,第二个向量,我想成为
vc<-c(1,2,0,4,5,0,7,8,9,10,...,499999,0)发布于 2019-07-09 08:06:40
您可以尝试使用包含所有值的较大向量作为模板,然后将零赋值给与第二个小向量不匹配的任何值:
v_out <- df$col1
v_out[!(v_out %in% vc)] <- 0
v_out
[1] 1 2 0 4 5 0 7 8 0 10数据
df$col1 <- c(1:10)
vc <- c(1,2,4,5,7,8,10)发布于 2019-07-09 08:05:16
您可以使用match和replace (感谢@RonakShah)
输入
vc <- c(1,2,4,5,7,8,10)
x <- 1:15结果
out <- replace(tmp <- vc[match(x, vc)], is.na(tmp), 0L)
out
# [1] 1 2 0 4 5 0 7 8 0 10 0 0 0 0 0发布于 2019-07-09 08:20:58
一种更隐秘,但可能更快的单列替代方案(使用Tim的数据):
`[<-`(numeric(max(df$col1)),vc,vc)
#[1] 1 2 0 4 5 0 7 8 0 10https://stackoverflow.com/questions/56947931
复制相似问题