0

我正在处理如图所示的数据框,但总共有 380 行

不确定这是否有帮助,但假设我正在处理数据框:

df <- data.frame(c(-10:-1),c(-5:4),c(1:10))

我想提取第一列或第二列中包含数字“-5”的任何行。

在共享图像中,我想在“HomeTeam”或“AwayTeam”列中提取包含“Arsenal”的行,但我不知道该怎么做。

这是我使用 grep() 的尝试

但是它显示以下消息:

"Error: Can't subset columns that don't exist. x The locations 12, 39, 45, 78, 98, etc. don't exist. i There are only 7 columns."

其中提到的位置正是我需要的行...

我想尝试其他一些过滤功能,例如 dplyr() 但我不明白它是如何工作的......而且我什至不确定它是否适合我想做的事情。

4

2 回答 2

1

使用您的df <- data.frame(c(-10:-1),c(-5:4),c(1:10))示例,并且由于您(可能)已经在使用tidyverse,因此可以使用代码实现您想要的:

if(!require(tidyverse)) install.packages('tidyverse'); library(tidyverse) #to load the package, just in case you haven't already!
df <- data.frame(c(-10:-1),c(-5:4),c(1:10))
colnames(df) <- c("col1", "col2", "col3")
df %>% filter(col1 %in% "-5" | col2 %in% "-5")

或者如果您希望两列中都包含 -5 的行,您可以使用:

df %>% filter(col1 %in% "-5" & col2 %in% "-5")

反而。对于您的联赛问题,我会这样做:

sample_Arsenal <- league1819 %>% filter(HomeTeam %in% "Arsenal" | AwayTeam %in% "Arsenal")
于 2020-11-10T05:47:19.473 回答
0

您可以使用grepl

sampleArsenal <- subset(league1819, grepl('Aresenal', HomeTeam) | 
                                    grepl('Aresenal', AwayTeam))

或者,如果您想尝试dplyr

library(dplyr)
library(stringr)

league1819 %>% 
   filter(str_detect(HomeTeam, 'Aresenal') | str_detect(AwayTeam, 'Aresenal'))
于 2020-11-10T03:41:43.693 回答