"警告:太少(少数)值"在R中使用tidyr包

时间:2017-01-24 19:33:21

标签: r tidyr

我有以下数据集D7

name sex_age eye_color height
1    J    M.34     Other     61
2    A    F.55      Blue     59
3    T    M.76     Brown     51
4    D    F.19     Other     57

我想将列sex_age分为sex列和age列,因此我输入

separate(D7,sex_age,c('sex','age'),sep='.')

但它会生成

name sex age eye_color height
1    J             Other     61
2    A              Blue     59
3    T             Brown     51
4    D             Other     57
Warning message:
Too many values at 4 locations: 1, 2, 3, 4 

此外,当我将原始数据集D7修改为D8

name sex_age eye_color height
1    J    M_34     Other     61
2    A    F_55      Blue     59
3    T    M_76     Brown     51
4    D    F_19     Other     57

我输入D7 %>% separate(sex_age,c('sex','age'),sep="_")它会给出

name  sex  age eye_color height
1    J M.34 <NA>     Other     61
2    A F.55 <NA>      Blue     59
3    T M.76 <NA>     Brown     51
4    D F.19 <NA>     Other     57
Warning message:
Too few values at 4 locations: 1, 2, 3, 4 

我是否滥用了separate功能?我很困惑。感谢您的任何建议。

1 个答案:

答案 0 :(得分:4)

由于sep=参数认为正则表达式而.是一个特殊字符,因此我们需要在这些特殊字符前加\\,以便将它们作为普通字符读取

separate(df, sex_age, into = c("sex", "age"), sep = "\\.")