r - 在R中的另一列下方插入多列

标签 r tidyr

这是我的数据。

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/

相关文章:

python - pandas dataframe - 减少初始值

r - Data.Table:重新排列数据时我的代码出错 --R

r - 针对长数据框的所有组的散点图

r - 用 R 中指定单词旁边的单词过滤所有行

r - 从宽格式到长格式时保留列的顺序

r - 如何使用 R 按模式识别列并将其转换为日期时间?

r - 如何使用 data.table 按日期(月、年、日)和子组汇总结果

r - 在R中按组转置数据

r - 修改当前 R session 的 R 包函数; assignInNamespace 的行为不像 fixInNamespace?

r - 合并列,同时忽略重复项和 NA