[英]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")
This is the output:这是 output:
IDa![]() |
IDb ![]() |
IDc ![]() |
IDe ![]() |
IDd ![]() |
IDe ![]() |
---|---|---|---|---|---|
robin![]() |
bob![]() |
eric![]() |
charlie![]() |
robin![]() |
gabby![]() |
But I want it to look like this:但我希望它看起来像这样:
IDa![]() |
IDb ![]() |
IDc ![]() |
IDe ![]() |
IDd ![]() |
---|---|---|---|---|
robin![]() |
bob![]() |
eric![]() |
charlie![]() |
robin![]() |
gabby![]() |
We may split
and then cbind
after padding with NA
我们可以在用
NA
填充后split
然后cbind
lst1 <- split(names, ID)
do.call(cbind, lapply(lst1, `length<-`, max(lengths(lst1))))
-output -输出
IDa IDb IDc IDd IDe
[1,] "robin" "bob" "eric" "robin" "charlie"
[2,] NA NA NA NA "gabby"
Another option:另外的选择:
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.