在 R 中分隔一列
Separate a column in R
data.df
colA
2 AD
3 KF
4 GH
我想把这一栏分成两栏
colA ColB
2 AD
3 KF
4 GH
这是我的代码:
library(dplyr)
X1 <- data.df
ca <- as.data.frame(X1) %>% separate(X1,col=colA, into = paste("colA","colB"))
错误:值未在 1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16、17、18、 19、20、21、22、23、24、25、26、27、28、29、30、31、32、33、34、35、36、37、38、39、40、41、42、43、 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64
我的代码有什么问题?
当你使用管道命令时,每个函数的第一个参数将是 data.frame,所以尝试
library(tidyr)
dat %>% separate(colA, c("colA", "colB"))
# colA colB
# 1 2 AD
# 2 3 KF
# 3 4 GH
数据
dat <- structure(list(colA = structure(1:3, .Label = c("2 AD", "3 KF",
"4 GH"), class = "factor")), .Names = "colA", row.names = c(NA,
-3L), class = "data.frame")
我们可以使用 base R
中的 read.table
来做到这一点。如果初始数据集中的'colA'为factor
class,则转换为character
,并使用read.table
。我们可以使用 col.names
参数指定列名。
read.table(text=as.character(dat$colA), sep='',
col.names=paste0('col', c('A', 'B')) )
# colA colB
#1 2 AD
#2 3 KF
#3 4 GH
另一个选项是 cSplit
来自 splitstackshape
。我们在 splitCols
和 sep
中指定要拆分的列。 direction
默认为 'wide'。
library(splitstackshape)
cSplit(dat, 'colA', ' ')
注意:"dat" 来自@nongkrong 的 post
data.df
colA
2 AD
3 KF
4 GH
我想把这一栏分成两栏
colA ColB
2 AD
3 KF
4 GH
这是我的代码:
library(dplyr)
X1 <- data.df
ca <- as.data.frame(X1) %>% separate(X1,col=colA, into = paste("colA","colB"))
错误:值未在 1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16、17、18、 19、20、21、22、23、24、25、26、27、28、29、30、31、32、33、34、35、36、37、38、39、40、41、42、43、 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64
我的代码有什么问题?
当你使用管道命令时,每个函数的第一个参数将是 data.frame,所以尝试
library(tidyr)
dat %>% separate(colA, c("colA", "colB"))
# colA colB
# 1 2 AD
# 2 3 KF
# 3 4 GH
数据
dat <- structure(list(colA = structure(1:3, .Label = c("2 AD", "3 KF",
"4 GH"), class = "factor")), .Names = "colA", row.names = c(NA,
-3L), class = "data.frame")
我们可以使用 base R
中的 read.table
来做到这一点。如果初始数据集中的'colA'为factor
class,则转换为character
,并使用read.table
。我们可以使用 col.names
参数指定列名。
read.table(text=as.character(dat$colA), sep='',
col.names=paste0('col', c('A', 'B')) )
# colA colB
#1 2 AD
#2 3 KF
#3 4 GH
另一个选项是 cSplit
来自 splitstackshape
。我们在 splitCols
和 sep
中指定要拆分的列。 direction
默认为 'wide'。
library(splitstackshape)
cSplit(dat, 'colA', ' ')
注意:"dat" 来自@nongkrong 的 post