In below code , separate_longer_delim
return error message
In row 2, can't recycle input of size 4 to size 6.
how to fix it ? Thanks!
library(tidyverse)
ori_df <- data.frame(
Cat_A = c("BDW","A_B_W_F"),
Cat_B = c("AWS","OVS"),
Cat_C = c("CATA","CATB"),
Cat_D = c("ABCDE","PBCD"),
Weight = c("1kg_2kg_3kg_4kg","1kg_2kg_3kg_5kg_10kg_20kg"),
Country = c("澳洲_德国_法国_加拿大_美国_日本_西班牙_意大利_英国",
"巴西_德国_俄罗斯_法国_加拿大_美国_日本_西班牙_意大利_英国"))
ori_df %>% separate_longer_delim(c('Cat_A','Weight','Country'),delim="_")
Not very elegant but a step-wise split does the job:
library(tidyverse)
ori_df <- data.frame(
Cat_A = c("BDW","A_B_W_F"),
Cat_B = c("AWS","OVS"),
Cat_C = c("CATA","CATB"),
Cat_D = c("ABCDE","PBCD"),
Weight = c("1kg_2kg_3kg_4kg","1kg_2kg_3kg_5kg_10kg_20kg"),
Country = c("澳洲_德国_法国_加拿大_美国_日本_西班牙_意大利_英国",
"巴西_德国_俄罗斯_法国_加拿大_美国_日本_西班牙_意大利_英国"))
ori_df %>%
separate_longer_delim(c('Weight'),delim="_") %>%
separate_longer_delim(c('Cat_A'), delim="_") %>%
separate_longer_delim(c('Country'),delim="_") %>%
head(., n=20)
#> Cat_A Cat_B Cat_C Cat_D Weight Country
#> 1 BDW AWS CATA ABCDE 1kg 澳洲
#> 2 BDW AWS CATA ABCDE 1kg 德国
#> 3 BDW AWS CATA ABCDE 1kg 法国
#> 4 BDW AWS CATA ABCDE 1kg 加拿大
#> 5 BDW AWS CATA ABCDE 1kg 美国
#> 6 BDW AWS CATA ABCDE 1kg 日本
#> 7 BDW AWS CATA ABCDE 1kg 西班牙
#> 8 BDW AWS CATA ABCDE 1kg 意大利
#> 9 BDW AWS CATA ABCDE 1kg 英国
#> 10 BDW AWS CATA ABCDE 2kg 澳洲
#> 11 BDW AWS CATA ABCDE 2kg 德国
#> 12 BDW AWS CATA ABCDE 2kg 法国
#> 13 BDW AWS CATA ABCDE 2kg 加拿大
#> 14 BDW AWS CATA ABCDE 2kg 美国
#> 15 BDW AWS CATA ABCDE 2kg 日本
#> 16 BDW AWS CATA ABCDE 2kg 西班牙
#> 17 BDW AWS CATA ABCDE 2kg 意大利
#> 18 BDW AWS CATA ABCDE 2kg 英国
#> 19 BDW AWS CATA ABCDE 3kg 澳洲
#> 20 BDW AWS CATA ABCDE 3kg 德国
Created on 2024-10-18 with reprex v2.1.1