R 将数据帧转换为矩阵并添加ID
我有一个数据帧df1,下面给出了一个示例R 将数据帧转换为矩阵并添加ID,r,R,我有一个数据帧df1,下面给出了一个示例 ID SNP1 SNP2 SNP3 SNP4 SNP5 ID1 1 2 2 0 0 ID2 0 1 0 1 0 ID3 1 2 2 1 1 ID4 0 1 1 0 0 ID5 2 0 2 1
ID SNP1 SNP2 SNP3 SNP4 SNP5
ID1 1 2 2 0 0
ID2 0 1 0 1 0
ID3 1 2 2 1 1
ID4 0 1 1 0 0
ID5 2 0 2 1 2
我想将其转换为下面给出的矩阵示例,并添加ID和SNP,以便将其与我的另一个协变量文件进行匹配,以便进一步分析
ID1 ID2 ID3 ID4 ID5
SNP1 1 0 1 0 2
SNP2 2 1 2 1 0
SNP3 2 0 2 1 2
SNP4 0 1 1 0 1
SNP5 0 0 1 0 2
将
ID
列移动到rownames,然后将其删除,将数据帧转换为矩阵,并转置:
df1 SNP3 2 0 2 1 2
#>SNP401
#>SNP5 0 0 1 0 2
或者使用tibble::column_to_rownames
库(tidyverse)
df1%as.matrix()%>%t()
mat1
#>ID1 ID2 ID3 ID4 ID5
#>SNP1 10 1 0 2
#>SNP2 2 1 2 1 0
#>SNP3 2 0 2 1 2
#>SNP401
#>SNP5 0 0 1 0 2
t()
无论如何都会强制转换为矩阵,但在强制中显式是一个好习惯。将ID
列移动到行名,然后将其删除,将数据帧转换为矩阵,并转置:
df1 SNP3 2 0 2 1 2
#>SNP401
#>SNP5 0 0 1 0 2
或者使用tibble::column_to_rownames
库(tidyverse)
df1%as.matrix()%>%t()
mat1
#>ID1 ID2 ID3 ID4 ID5
#>SNP1 10 1 0 2
#>SNP2 2 1 2 1 0
#>SNP3 2 0 2 1 2
#>SNP401
#>SNP5 0 0 1 0 2
t()
无论如何都会强制到一个矩阵,但是在强制中显式是一个好习惯。像rownames
和colnames
这样的函数也有rownames
和colnames
这样的函数也有rownames。你不需要t(df)
?结构(t(df[-1]),dimnames=list(names(df[-1]),df[[1]])
难道你不需要t(df)
?结构(t(df[-1]),dimnames=list(names(df[-1]),df[[1]])
`colnames<-`(data, the_column_names)
`colnames<-`(t(df1[-1]), df1[[1]])
## ID1 ID2 ID3 ID4 ID5
## SNP1 1 0 1 0 2
## SNP2 2 1 2 1 0
## SNP3 2 0 2 1 2
## SNP4 0 1 1 0 1
## SNP5 0 0 1 0 2
mat1 <- `colnames<-`(data, the_column_names)