数据框df:
0 1 2 3 4 A B C D E
1 0 1 1 0 0 a b d s e
2 0 0 1 0 0 a w d d e
3 0 0 1 1 0 a c w d e
有没有什么方法可以通过合并每两列对应的索引号和字母将数据帧转换为新的数据帧?
0(A) 1(B) 2(C) 3(D) 4(E)
1 0(a) 1(b) 1(d) 0(s) 0(e)
2 0(a) 0(w) 1(d) 0(d) 0(e)
3 0(a) 0(c) 1(w) 1(d) 0(e)
答案 0 :(得分:5)
将paste0
与mapply
:
DF <- read.table(text=" 0 1 2 3 4 A B C D E
1 0 1 1 0 0 a b d s e
2 0 0 1 0 0 a w d d e
3 0 0 1 1 0 a c w d e", header=TRUE, check.names=FALSE)
DF1 <- as.data.frame(mapply(function(x, y) paste0(x, "(", y, ")"),
DF[, 1:5], DF[, 6:10]))
names(DF1) <- paste0(names(DF1), "(", names(DF[, 6:10]), ")")
# 0(A) 1(B) 2(C) 3(D) 4(E)
#1 0(a) 1(b) 1(d) 0(s) 0(e)
#2 0(a) 0(w) 1(d) 0(d) 0(e)
#3 0(a) 0(c) 1(w) 1(d) 0(e)