首页 > 解决方案 > R将因子变量的级别堆叠到数据框中

问题描述

如何通过某个函数生成包含在另一个数据框中的因子变量列表的堆叠级别的数据框。


factors <- c("f1", "f2", "f3")

df <- data.frame(f1 = factor(rep(1:3, 10)),
                  f2 = factor(rep(1:2, 15)),
                  f3 = factor(rep(1:3, 10)))

factor_levels <- function(fac = factors, dat = df){

?
}


# In the end, I want something like this:

a b
1 f1
2 f1
3 f1
1 f2
2 f2
1 f3
2 f3
3 f3

标签: r

解决方案


这个怎么样:

pivot_longer(df, everything(), names_to="b", values_to="a") %>% 
  select(a,b) %>% 
  distinct() %>% 
  arrange(b,a)
# # A tibble: 8 x 2
#    a     b    
#   <fct> <chr>
# 1 1     f1   
# 2 2     f1   
# 3 3     f1   
# 4 1     f2   
# 5 2     f2   
# 6 1     f3   
# 7 2     f3   
# 8 3     f3   

推荐阅读