这是我的数据。
dat<-read.table(text=" MP1 MP2 MP3 N1 N2 N3 WP1 WP2 WP3
A A A Y Y Y 10 11 11
A B A Y Y Y 10 11 11
B B A Y Y Y 10 10 11
A B A Y Y Y 11 11 10
B B A Y Y Y 10 10 11
B B A N Y Y 11 10 10
B C A Y Y Y 11 11 11
C C B Y Y N 10 11 10
B C B Y Y Y 11 11 11
B C B Y N Y 10 11 11
",header=TRUE)
我想要这张 table 。事实上,我想获得三列而不是九列。这些列的名称如下:
MP N WP
A Y 10
A Y 10
B Y 10
A Y 11
B Y 10
B N 11
B Y 11
C Y 10
B Y 11
B Y 10
A Y 11
B Y 11
B Y 10
B Y 11
B Y 10
B Y 10
C Y 11
C Y 11
C Y 11
C N 11
A Y 11
A Y 11
A Y 11
A Y 10
A Y 11
A Y 10
A Y 11
B N 10
B Y 11
B Y 11
我试过这个:
dat1 <- data.frame(MP=unlist(dat, use.names = FALSE))
但是,不确定为什么它不起作用。我也用过
dat2 <- data.frame(MP = c(dat[,"MP"], dat[,"N"],dat[,WP])))
最佳答案
这是另一种保留因子的基本 R 方法:
names(dat) <- c(rep("MP", 3), rep("N", 3), rep("WP", 3))
rdat2 <- rbind(dat[, c(1, 4, 7)], dat[, c(2, 5, 8)], dat[, c(3, 6, 9)])
str(rdat2)
# 'data.frame': 30 obs. of 3 variables:
# $ MP: Factor w/ 3 levels "A","B","C": 1 1 2 1 2 2 2 3 2 2 ...
# $ N : Factor w/ 2 levels "N","Y": 2 2 2 2 2 1 2 2 2 2 ...
# $ WP: int 10 10 10 11 10 11 11 10 11 10 ...
关于r - 在R中的另一列下方插入多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59338873/