在R中将一个col折叠成另一个col

时间:2019-09-17 17:14:49

标签: r dplyr

我有一个数据框,顶部看起来像这样:

>head(transposed_label,20)
      val index
 [1,] "0" "1"  
 [2,] "1" "1"  
 [3,] "0" "1"  
 [4,] "0" "2"  
 [5,] "1" "2"  
 [6,] "0" "2"  
 [7,] "1" "3"  
 [8,] "0" "3"  
 [9,] "0" "3"  
[10,] "0" "4"  
[11,] "1" "4"  
[12,] "0" "4"  
[13,] "0" "5"  
[14,] "0" "5"  
[15,] "1" "5"  
[16,] "0" "6"  
[17,] "1" "6"  
[18,] "0" "6"  
[19,] "0" "7"  
[20,] "0" "7"

我想按“索引”折叠“ val”中的值

我尝试过:

>library(dplyr)

>new <- as.data.frame(transposed_label) %>% group_by(as.numeric(index))
%>% summarise(val = paste(val, collapse =","))

但这给了我

head(new,10)
# A tibble: 10 x 2
      as.numeric(index) val  
                <dbl> <chr>
1                   1 0,1,0
2                   2 1,0,0
3                   3 0,1,0
4                   4 0,1,0
5                   5 1,0,0
6                   6 0,1,0
7                   7 0,1,0
8                   8 0,0,1
9                   9 0,0,1
10                  10 1,0,0

当我期望像这样的时候

1 0,1,0
2 0,1,0
3 1,0,0
4 0,1,0
5 0,0,1

etc

我做错了什么?

1 个答案:

答案 0 :(得分:2)

看起来列分别是factoras.data.frame,得到的值是整数强制。因此,如果我们使用stringsAsFactors = FALSE,应该可以解决问题

as.data.frame(transposed_label, stringsAsFactors = FALSE)