Как я могу пройти через вектор в R Dataframe

У меня есть фрейм данных, который выглядит так

Name   Cricket   Football   Swimming 
A      Y         Y          N
B      N         Y          N
C      Y         N          Y

Мне нужен код, который проходит через все столбцы и помечает каждую запись, используя имя столбца, например:

Name   Cricket   Football   Swimming   Sports
A      Y         Y          N          Cricket and Football
B      N         Y          N          Football Only
C      Y         N          Y          Cricket and Swimming

У меня есть идея использовать ifelse(), но было бы утомительно, если бы количество столбцов в фрейме данных увеличивалось, и мне нужно что-то динамическое, что мне не нужно менять каждый раз.

пожалуйста помоги!!

3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
3
0
50
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вариантом может быть gather данные в «длинном» формате, filter строки с «Y», сгруппированные по «Имени», вставка элементов в «ключ» (str_c) и left_join с исходным набором данных.

library(tidyverse)
df1 %>%
   gather(key, val, -Name) %>% 
   filter(val == 'Y') %>% 
   group_by(Name) %>% 
   summarise(Sports = str_c(key, collapse= ' and ')) %>%
   left_join(df1) %>%
   select(names(df1), "Sports")
# A tibble: 3 x 5
#  Name  Cricket Football Swimming Sports              
#  <chr> <chr>   <chr>    <chr>    <chr>               
#1 A     Y       Y        N        Cricket and Football
#2 B     N       Y        N        Football            
#3 C     Y       N        Y        Cricket and Swimming

данные

df1 <- structure(list(Name = c("A", "B", "C"), Cricket = c("Y", "N", 
"Y"), Football = c("Y", "Y", "N"), Swimming = c("N", "N", "Y"
)), class = "data.frame", row.names = c(NA, -3L))

Спасибо Акрун, это было действительно полезно

Anirudh Dutt 22.05.2019 17:41

Что-то вроде этого (в базе R) тоже сделает это:

df$Sports <- apply(df[,-1]=="Y", 1, function(r) paste(names(df)[-1][r], collapse=" and "))

#  Name Cricket Football Swimming               Sports
#1    A       Y        Y        N Cricket and Football
#2    B       N        Y        N             Football
#3    C       Y        N        Y Cricket and Swimming

Другие вопросы по теме