假设我有这样的数据:
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')
需要帮助;)
发布于 2019-01-30 19:55:55
用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 Var3https://stackoverflow.com/questions/54448308
复制相似问题