[英]Convert data frame info (a column that's a character list) into binary matrix
我们可以这样做:首先创建一个虚拟IDs1
并删除所有 special 。 然后单独的行将值 TRUE 添加到所有枢轴更宽,然后全部乘以 1 以获得 0 和 1。
library(dplyr)
library(tidyr)
df %>%
mutate(IDs1 = IDs,
IDs1 = gsub("[[:punct:]]", "", IDs1)) %>%
separate_rows(IDs1) %>%
mutate(value = TRUE) %>%
pivot_wider(names_from = IDs1,values_from=value,values_fill=FALSE) %>%
mutate(across(-c(Filename, IDs), ~. *1))
输出:
Filename IDs `86I` `114J` `35Y` `126K`
<chr> <chr> <dbl> <dbl> <dbl> <dbl>
1 20220628_SD02_8908.JPG [86I] 1 0 0 0
2 20220628_SD02_8909.JPG [86I] 1 0 0 0
3 20220628_SD02_8910.JPG [86I] 1 0 0 0
4 20220628_SD02_8911.JPG [86I] 1 0 0 0
5 20220628_SD02_8912.JPG [86I] 1 0 0 0
6 20220628_SD02_8913.JPG [86I] 1 0 0 0
7 20220628_SD02_8914.JPG [86I] 1 0 0 0
8 20220628_SD02_8915.JPG [86I] 1 0 0 0
9 20220628_SD02_8916.JPG [114J] 0 1 0 0
10 20220628_SD02_8918.JPG [114J] 0 1 0 0
11 20220628_SD02_8919.JPG [35Y, 114J, 12~ 0 1 1 1
12 20220628_SD02_8922.JPG [35Y, 114J, 12~ 0 1 1 1
13 20220628_SD02_8923.JPG [35Y, 114J, 12~ 0 1 1 1
数据:
structure(list(Filename = c("20220628_SD02_8908.JPG", "20220628_SD02_8909.JPG",
"20220628_SD02_8910.JPG", "20220628_SD02_8911.JPG", "20220628_SD02_8912.JPG",
"20220628_SD02_8913.JPG", "20220628_SD02_8914.JPG", "20220628_SD02_8915.JPG",
"20220628_SD02_8916.JPG", "20220628_SD02_8918.JPG", "20220628_SD02_8919.JPG",
"20220628_SD02_8922.JPG", "20220628_SD02_8923.JPG"), IDs = c("[86I]",
"[86I]", "[86I]", "[86I]", "[86I]", "[86I]", "[86I]", "[86I]",
"[114J]", "[114J]", "[35Y, 114J, 126K]", "[35Y, 114J, 126K]",
"[35Y, 114J, 126K]")), class = "data.frame", row.names = c("18",
"19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29",
"30"))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.