我想使用带有空白(“”)和非空白字符串的向量作为子集行,以便最终得到类似于dfgoal
的结果。
我尝试使用dplyr::select()
,但收到错误消息(Error: Strings must match column names. Unknown columns: tooth, , head, foot
)。
我意识到我遇到了一个问题,就是我想保留一些“”并去除其他“”,但是我不知道如何解决它。
感谢您的帮助!
# Data
df <- data.frame(avar=c("tooth","","","head","","foot","",""),bvar=c(1:8))
# Vector
veca <- c("tooth","foot")
vecb <- c("")
vecc <- as.vector(rbind(veca,vecb))
vecc <- unique(vecc)
# Attempt
library(dplyr)
df <- df %>% dplyr::select(vecc)
# Goal
dfgoal <- data.frame(avar=c("tooth","","","foot","",""),bvar=c(1,2,3,6,7,8))
答案 0 :(得分:0)
我不清楚您要做什么。我假设您在问如何选择avar %in% veca
所在的行,包括随后的空白(""
)行。
也许使用tidyr::fill
这样的事情?
library(tidyverse)
veca <- c("tooth","foot")
df %>%
mutate(tmp = ifelse(avar == "", NA, as.character(avar))) %>%
fill(tmp) %>%
filter(tmp %in% veca) %>%
select(-tmp)
# avar bvar
#1 tooth 1
#2 2
#3 3
#4 foot 6
#5 7
#6 8