拆分数据框的一列

时间:2017-03-15 23:04:32

标签: r

我有一个名为Variable的列和一些与之关联的值:

Variable  Value
A D         5
A D         5
B D         5
B E         5
C E         5
C E         5

其中(A D),(B D),(B E),(C E)是我分析的一些东西的名称。如何将列拆分为2列,将第1列作为因子列:

Column1
A:2
B:2
C:2

和第2列遵循类似的结构:

Column2
D:3
E:3

1 个答案:

答案 0 :(得分:0)

由于 Column1 Column2 具有不同的行号,因此我使用 list 来存储结果。

data <- data.frame(
  Variable = c("A D", "A D", "B D", "B E", "C E", "C E"),
  Value = rep(5, 6)
)
split_var <- function(variable){
  return(strsplit(variable, " ")[[1]])
}
variable_mat <- t(apply(matrix(data[,1], ncol=1), 1, split_var))
Column1_table <- table(variable_mat[,1])
Column1 <- paste(names(Column1_table), Column1_table, sep = ":")

Column2_table <- table(variable_mat[,2])
Column2 <- paste(names(Column2_table), Column2_table, sep = ":")

result_list <- list(Column1 = Column1, Column2 = Column2)

结果:

> result_list
$Column1
[1] "A:2" "B:2" "C:2"

$Column2
[1] "D:3" "E:3"