创建一个具有列的数据帧,该列将包括一列的唯一值和另一个数据帧的唯一列名



我有下面的数据帧:

dummy<-structure(list(Name = c("A", "B", "C", "A", "B", "C"), `#BISB` = c(2, 
6, 4, 0, 4, 6), `#BISC` = c(2, 6, 4, 0, 4, 6), `#BISD` = c(2, 
6, 4, 0, 4, 6), `#BISE` = c(2, 6, 4, 0, 4, 6), `#BISF` = c(2, 
6, 4, 0, 4, 6), `#BISG` = c(2, 6, 4, 0, 4, 6), `#BISH` = c(2, 
6, 4, 0, 4, 6)), row.names = c(NA, -6L), class = c("tbl_df", 
"tbl", "data.frame"))

并且我想在CCD_ 1数据帧中对其进行整形。此nodes数据帧应包含一个名为id的列,该列具有索引号(1,2,3…(,第二列将命名为group,并且它将包含列Name的所有唯一值以及dummy数据帧中除列Name之外的所有唯一列名,如:

id group
1   1     A
2   2     B
3   3     C
4   4 #BISB
5   5 #BISC
6   6 #BISD
7   7 #BISE
8   8 #BISF
9   9 #BISG
10 10 #BISH

我们可以用summarise创建一个tibble,方法是取'Name'的nodes0值,将(c(与除第一个之外的列名连接,然后创建'id'作为序列(row_number()(

library(dplyr)
dummy %>% 
summarise(group = c(unique(Name), names(.)[-1])) %>%
mutate(id = row_number(), .before = 1)

-输出

# A tibble: 10 × 2
id group
<int> <chr>
1     1 A    
2     2 B    
3     3 C    
4     4 #BISB
5     5 #BISC
6     6 #BISD
7     7 #BISE
8     8 #BISF
9     9 #BISG
10    10 #BISH

或者更容易

out <- data.frame(group = c(unique(dummy$Name), names(dummy)[-1]))
out$id <- seq_len(nrow(out))

最新更新