然而,有一些数字缺失(2,5,7,9)。对于缺少的数字,我想要“NA”。我通过以下代码实现了这一点:
df <- data.frame(group=as.integer(c(1,1,1,2,2,2)), numbers_with_gaps=as.integer(c(1,3,4,6,8,10)))
numbers_with_gaps <- df$numbers_with_gaps
numbers_complete <- c(1:10)
true_false_vector <- numbers_complete %in% numbers_with_gaps
numbers_complete[true_false_vector == FALSE] <- NA
我的问题是我希望上面数据框的第一列也有这些“NA”值。不幸的是,将“真正的假向量”“应用”到整个数据帧是行不通的。哪个功能对实现我的目标有用?
答案 0 :(得分:1)
您可以使用tidyverse
来使用complete
中的tidyr
。然后使用NA
中的group
在numbers_with_gaps
中设置它们,即
library(tidyverse)
df %>%
complete(numbers_with_gaps = seq(10)) %>%
mutate(numbers_with_gaps = replace(numbers_with_gaps, is.na(group), NA))
给出,
# A tibble: 10 x 2 numbers_with_gaps group <int> <int> 1 1 1 2 NA NA 3 3 1 4 4 1 5 NA NA 6 6 2 7 NA NA 8 8 2 9 NA NA 10 10 2
答案 1 :(得分:0)
df <- data.frame(group=as.integer(c(1,1,1,2,2,2)), numbers_with_gaps=as.integer(c(1,3,4,6,8,10)))
numbers_with_gaps <- df$numbers_with_gaps
numbers_complete <- c(1:10)
true_false_vector <- numbers_complete %in% numbers_with_gaps
df[which(true_false_vector == FALSE),] <- NA