我有以下数据集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
功能?我很困惑。感谢您的任何建议。
答案 0 :(得分:4)
由于sep=
参数认为正则表达式而.
是一个特殊字符,因此我们需要在这些特殊字符前加\\
,以便将它们作为普通字符读取
separate(df, sex_age, into = c("sex", "age"), sep = "\\.")