繁体   English   中英

将相似的列与不同的字符名称数据组合在一起?

[英]Combine similar columns with different character names data?

ID <- c("IDa", "IDb","IDc","IDe","IDd","IDe")
names1 <- c("robin", "bob", "eric", "charlie", "robin", "gabby")
matrix1 <- matrix(names1, 1, 6)
colnames(matrix1) <- c("IDa", "IDb", "IDc","IDe", "IDd", "IDe")


这是 output:

伊达 IDb IDc IDe IDd IDe
知更鸟 鲍勃 埃里克 查理 知更鸟 饶舌的

但我希望它看起来像这样:

伊达 IDb IDc IDe IDd
知更鸟 鲍勃 埃里克 查理 知更鸟
饶舌的

我们可以在用NA填充后split然后cbind

lst1 <- split(names, ID)
do.call(cbind, lapply(lst1, `length<-`, max(lengths(lst1))))

-输出

     IDa     IDb   IDc    IDd     IDe      
[1,] "robin" "bob" "eric" "robin" "charlie"
[2,] NA      NA    NA     NA      "gabby"  

另外的选择:

library(reshape2)
library(tidyverse)

melt(matrix1) %>% 
  select(-Var1) %>% 
  group_by(Var2) %>% 
  mutate(id = row_number()) %>% 
  pivot_wider(
    names_from = Var2,
    values_from = value
  ) %>% 
  select(-id)
  IDa   IDb   IDc   IDe     IDd  
  <chr> <chr> <chr> <chr>   <chr>
1 robin bob   eric  charlie robin
2 NA    NA    NA    gabby   NA   

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM