R-кадр данных объединяет столбцы в кадре данных на основе других столбцов - PullRequest
0 голосов
/ 03 мая 2018

У меня есть следующий фрейм данных:

df <- tibble::tribble(~home, ~visitor, ~hcountry, ~vcountry,
"Milan", "Manchester", "ITA", "ENG",
"LIVERPOOL", "MILAN", "ENG", "ITA",
"Real Madrid", "Juventus", "SPA", "ITA")

#> # A tibble: 3 x 4
#>   home        visitor    hcountry vcountry
#>   <chr>       <chr>      <chr>    <chr>   
#> 1 Milan       Manchester ITA      ENG     
#> 2 LIVERPOOL   MILAN      ENG      ITA     
#> 3 Real Madrid Juventus   SPA      ITA 

и хотел бы получить только итальянские команды, а именно: Милан, Милан, Ювентус ... как это возможно без использования петель?

Ответы [ 3 ]

0 голосов
/ 03 мая 2018

В качестве альтернативы вы можете попробовать составить список стран проживания и стран проживания, чтобы найти уникальные значения

library(dplyr)
library(tidyr)

df %>% gather(key1, country, -c(home, visitor)) %>% 
  gather(key2, team, -c(key1, country)) %>% 
  mutate_at(vars(key1, key2), substr, start=1, stop=1) %>% 
  filter(key1==key2) %>% select(-key1, -key2) %>% 
  mutate(team=tools::toTitleCase(tolower(team))) %>% 
  filter(country=="ITA") %>% 
  distinct()

#> # A tibble: 2 x 2
#>   country team    
#>   <chr>   <chr>   
#> 1 ITA     Milan   
#> 2 ITA     Juventus

Удалить последние distinct(), если вы хотите, чтобы значение в Милане дублировалось

0 голосов
/ 03 мая 2018

Мы можем использовать filter от dplyr

library(dplyr)
df %>%
    filter(hcountry == "ITA" | vcountry == "ITA")
0 голосов
/ 03 мая 2018

Прежде всего, я рекомендую базовый учебник R, чтобы ознакомиться с основными операциями с данными R, такими как поднаборы и т. Д. См., Например, R для начинающих в CRAN.

В вашем случае вы можете сделать:

df[df$hcountry == "ITA" | df$vcountry == "ITA", ]
#    home    visitor hcountry vcountry
#1       Milan Manchester      ITA      ENG
#2   LIVERPOOL      MILAN      ENG      ITA
#3 Real Madrid   Juventus      SPA      ITA

Или

subset(df, hcountry == "ITA" | vcountry == "ITA")

Пример данных

df <- read.table(text =
    "home  visitor  hcountry vcountry
Milan Manchester ITA ENG
LIVERPOOL MILAN ENG ITA
'Real Madrid' Juventus SPA ITA", header  =T)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...