3 回答

TA貢獻1794條經驗 獲得超8個贊
Hadley有一個非常優(yōu)雅的解決方案,可以在他的數(shù)據幀中完成這個任務。reshape包,使用該函數(shù)colsplit.
require(reshape)
> df <- data.frame(ID=11:13, FOO=c('a|b','b|c','x|y'))
> df
ID FOO
1 11 a|b
2 12 b|c
3 13 x|y
> df = transform(df, FOO = colsplit(FOO, split = "\\|", names = c('a', 'b')))
> df
ID FOO.a FOO.b
1 11 a b
2 12 b c
3 13 x y

TA貢獻1895條經驗 獲得超7個贊
新流行tidyr包用separate..它使用正則表達式,因此必須轉義|
df <- data.frame(ID=11:13, FOO=c('a|b', 'b|c', 'x|y'))
separate(data = df, col = FOO, into = c("left", "right"), sep = "\\|")
ID left right
1 11 a b
2 12 b c
3 13 x y
雖然在這種情況下,缺省值足夠聰明,可以工作(它查找要拆分的非字母數(shù)字字符)。
separate(data = df, col = FOO, into = c("left", "right"))
- 3 回答
- 0 關注
- 619 瀏覽
添加回答
舉報