如果我的数据与此类似:
Variable 1 Variable 2 Variable 3
1 Red|Blue 0|1 1|0
2 Blue|Red 1|0 0|1
3 Green|Red 0|1 1|0
4 Yellow|Blue 1|0 0|1
基于“ |”,我该用什么分隔?像这样:
Variable 1 Variable 2 Variable 3
1 Red 0 1
2 Blue 1 0
3 Blue 1 0
4 Red 0 1
5 Green 0 1
6 Red 1 0
7 Yellow 1 0
8 Blue 0 1
答案 0 :(得分:3)
您可以使用separate_rows
> df %>%
separate_rows(., Variable1, Variable2, Variable3, convert = TRUE)
# A tibble: 8 x 3
Variable1 Variable2 Variable3
<chr> <int> <int>
1 Red 0 1
2 Blue 1 0
3 Blue 1 0
4 Red 0 1
5 Green 0 1
6 Red 1 0
7 Yellow 1 0
8 Blue 0 1
答案 1 :(得分:0)
我们还可以使用cSplit
中的splitstackshape
library(splitstackshape)
cSplit(df1, c("Variable1", "Variable2", "Variable3"), sep="|", "long")
# Variable1 Variable2 Variable3
#1: Red 0 1
#2: Blue 1 0
#3: Blue 1 0
#4: Red 0 1
#5: Green 0 1
#6: Red 1 0
#7: Yellow 1 0
#8: Blue 0 1
df1 <- structure(list(Variable1 = c("Red|Blue", "Blue|Red", "Green|Red",
"Yellow|Blue"), Variable2 = c("0|1", "1|0", "0|1", "1|0"), Variable3 = c("1|0",
"0|1", "1|0", "0|1")), class = "data.frame", row.names = c("1",
"2", "3", "4"))