Как преобразовать имена столбцов в текст / векторы на основе частоты? - PullRequest
0 голосов
/ 30 января 2019

Предположим, у меня есть такой фрейм данных:

df <- data.frame(ID=c('A','B','C'),Var1=c(2,6,2),Var2=c(0,3,1),Var3 = c(2,0,3))

Я хочу преобразовать мой фрейм данных в что-то вроде этого:

ID Variables
A  Var1 Var1 Var3 Var3
B  Var1 Var1 Var1 Var1 Var1 Var1 Var2 Var2 Var2 
C  Var1 Var1 Var2 Var3 Var3 Var3

Как правило, столбец Variables равенrep('Colnames Here','Frequency')

Нужна помощь;)

1 Ответ

0 голосов
/ 30 января 2019

С tidyverse:

library(tidyverse)

df %>%
  gather(var, val, -ID) %>%
  filter(val != 0) %>%
  mutate(Variables = map2_chr(var, val, ~paste(rep(.x, .y), collapse = ' '))) %>%
  group_by(ID) %>%
  summarize(Variables = paste(Variables, collapse = ' '))

Выход:

# A tibble: 3 x 2
  ID    Variables                                   
  <fct> <chr>                                       
1 A     Var1 Var1 Var3 Var3                         
2 B     Var1 Var1 Var1 Var1 Var1 Var1 Var2 Var2 Var2
3 C     Var1 Var1 Var2 Var3 Var3 Var3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...