r - 在 r 中使用 "/"分隔符将列分成两部分

标签 r split dataframe

我有以下类型的数据,尽管 data.frame 非常大。

A1 <- c("A/B", "A/A", "B/B", "A/A")
B1 <- c("B/B", "C/C", "C/B", "D/A")
C1 <- c("B/B", "C/C", "C/B", "D/A")
mydf <- data.frame (A1, B1, C1)
mymat <- as.matrix (mydf)
mymat
         A1    B1    C1   
[1,] "A/B" "B/B" "B/B"
[2,] "A/A" "C/C" "C/C"
[3,] "B/B" "C/B" "C/B"
[4,] "A/A" "D/A" "D/A"

我想将每一列分成两个“/”是sperator。因此输出看起来像:
    A1a  A1b   B1a  B1b    C1a  C1b   
[1,] A   B      B    B     B     B 
[2,] A   A      C    C     C     C
[3,] B   B      C    B     C     B
[4,] A   A      D    A     D     A

最佳答案

这是使用 reshape2 的 colsplit 的一种解决方案:

require(reshape2)
mymat <- as.data.frame(mymat)

LS <- lapply(seq_along(mymat), function(i){
    colsplit(mymat[, i], "/", paste0(colnames(mymat)[i], letters[1:2]))
    }
)

do.call('cbind', LS)

其中产生:
  A1a A1b B1a B1b C1a C1b
1   A   B   B   B   B   B
2   A   A   C   C   C   C
3   B   B   C   B   C   B
4   A   A   D   A   D   A

关于r - 在 r 中使用 "/"分隔符将列分成两部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10202141/

相关文章:

r - eventReactive 对所有输入值使用react

r - 使用 ggvis R 为线图创建辅助 y 轴

r - 在可用 R 包的描述中搜索

Java将元素拆分并添加到相应数据类型的数组列表中

java - 从巨大的字符串中按部分创建数组

python - Pandas 数据框行的列表理解

r - 月数(9) 的算术结果为 NA

python - 如何在 python 控制台中显示两个不同的输出

python - 在数据框末尾添加 3 个重复列

python - from_records() 的 nrows 参数在 pandas 中有什么作用?