我有这样的数据:
view(S)
# A tibble: 10 x 1
Source
<chr>
1 137
2 137,111,43,34,34,43,22
3 137
4 137
5 137,45,34,63,34,45,22
6 137,78,63
7 137.63
8 137
9 137,83,78
10 137,132,128
我想将每个不同的值作为它自己的列,如果该值出现在一行中,则该值应为x,否则不应插补任何值。
137 111 43 ...
1 x
2 x x x
3 x
4 x
5 x
...
separate
函数,然后将所有非NA的值替换为x:
library(tidyr)
separate(S, col = "Source", into = c("137", "111", "43"), sep = ",")
# A tibble: 10 x 3
x Y Z
<chr> <chr> <chr>
1 137 NA NA
2 137 111 43
3 137 NA NA
4 137 NA NA
5 137 45 34
6 137 78 63
7 137.63 NA NA
8 137 NA NA
9 137 83 78
10 137 132 128
然而,实际上,不同数字的数量要比示例中大得多。
structure(list(Source = c("137", "137,111,43,34,34,43,22", "137",
"137", "137,45,34,63,34,45,22", "137,78,63", "137.63", "137",
"137,83,78", "137,132,128")), row.names = c(NA, -10L), class = c("tbl_df",
"tbl", "data.frame"))