假设我有一个像这样的数据框:
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')
需要帮助;)
答案 0 :(得分:2)
使用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