使用向量选择/细分空白行和非空白行

时间:2018-08-11 15:49:49

标签: r dplyr

我想使用带有空白(“”)和非空白字符串的向量作为子集行,以便最终得到类似于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)) 

1 个答案:

答案 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