如何在R中为重复项创建单个列

如何在R中为重复项创建单个列,r,R,我有一张这样的表格(>200个读数,重复样本): 哪些代码可用于获取以下内容的输出: **X** 1 4 2 5 3 6 7 10 8 11 9 12 假设数据集是一个矩阵(作为数据.帧不能有重复的行名),按行名拆分,并取消列表列表 data.frame(X=unlist(split(m1, row.names(m1)), use.names = FALSE)) # X #1 1

我有一张这样的表格(>200个读数,重复样本):

哪些代码可用于获取以下内容的输出:

    **X**
    1
    4
    2
    5
    3
    6
    7
    10
    8
    11
    9
    12

假设数据集是一个
矩阵
(作为
数据.帧
不能有重复的行名),
按行名拆分
,并
取消列表
列表

data.frame(X=unlist(split(m1, row.names(m1)), use.names = FALSE))
#    X
#1   1
#2   4
#3   2
#4   5
#5   3
#6   6
#7   7
#8  10
#9   8
#10 11
#11  9
#12 12
数据
m1如果您拥有的(我们称之为
data
)属于
matrix
类,那么您可以使用以下函数:

X <- as.vector(t(data))

<代码> x假设您的数据集是一个数据帧,可以考虑使用<代码> DPLYR 和<代码> TiDyr 。请注意,数据框不能有重复的行名称,因此我假设如果记录是
Site1
Site2
,则会记录一个名为
Site
的列

library(dplyr)
library(tidyr)

# Create example data frame
dt <- read.table(text = "Site    A    B   C
 Site1      1    2   3
 Site1      4    5   6
 Site2      7    8   9
 Site2      10   11  12",
                 header = TRUE, stringsAsFactors = FALSE)
dt
#    Site  A  B  C
# 1 Site1  1  2  3
# 2 Site1  4  5  6
# 3 Site2  7  8  9
# 4 Site2 10 11 12

dt2 <- dt %>%
  gather(Col, X, -Site) %>%
  arrange(Site) %>%
  select(X)
dt2
#     X
# 1   1
# 2   4
# 3   2
# 4   5
# 5   3
# 6   6
# 7   7
# 8  10
# 9   8
# 10 11
# 11  9
# 12 12
库(dplyr)
图书馆(tidyr)
#创建示例数据帧
dt%
安排(站点)%>%
选择(X)
dt2
#X
# 1   1
# 2   4
# 3   2
# 4   5
# 5   3
# 6   6
# 7   7
# 8  10
# 9   8
# 10 11
# 11  9
# 12 12

您可以执行
data.frame(X=unlist(拆分(m1,row.names(m1)),use.names=FALSE))
顺序重要吗?您好。谢谢你的评论。然而,我得到的data.frame不是我想要的。我想有一个按顺序(每个网站)1,4,2,5,3等重复1列。。。。用你的代码我得到了1,2,3,4,。。我对这些东西还很幼稚。也许我遗漏了一些东西。@Victorp正如我在帖子中提到的,我使用的是一个例子,我假设它是一个矩阵
X <- as.vector(t(data))
library(dplyr)
library(tidyr)

# Create example data frame
dt <- read.table(text = "Site    A    B   C
 Site1      1    2   3
 Site1      4    5   6
 Site2      7    8   9
 Site2      10   11  12",
                 header = TRUE, stringsAsFactors = FALSE)
dt
#    Site  A  B  C
# 1 Site1  1  2  3
# 2 Site1  4  5  6
# 3 Site2  7  8  9
# 4 Site2 10 11 12

dt2 <- dt %>%
  gather(Col, X, -Site) %>%
  arrange(Site) %>%
  select(X)
dt2
#     X
# 1   1
# 2   4
# 3   2
# 4   5
# 5   3
# 6   6
# 7   7
# 8  10
# 9   8
# 10 11
# 11  9
# 12 12