使用R拆分并连接列中的字符串
我有一个带有列名的矩阵[34,11]:使用R拆分并连接列中的字符串,r,matrix,string-split,R,Matrix,String Split,我有一个带有列名的矩阵[34,11]: row.names X33 X40 X46 X50 X60 X80 X90 X100 X130 X200 INTERGENIC-chrI-188881-G-C 0.37 0.41 0.48 0.45 0.47 0.42 0.45 0.44 0.40 0.36 0.36 0.33 0.39 INTERGENIC-chrI-188939-A-G 0.38 0.48 0.56
row.names X33 X40 X46 X50 X60 X80 X90 X100 X130 X200
INTERGENIC-chrI-188881-G-C 0.37 0.41 0.48 0.45 0.47 0.42 0.45 0.44 0.40 0.36 0.36 0.33 0.39
INTERGENIC-chrI-188939-A-G 0.38 0.48 0.56 0.54 0.57 0.45 0.57 0.51 0.49 0.47 0.41 0.38 0.52
INTERGENIC-chrXIII-191990-A-T 0.14 0.15 0.15 0.22 0.16 0.16 0.15 0.31 0.11 0.23 0.12 0.12 0.19
SDS3-chrIX-202625-T-G 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.33 0.35 0.41 0.50 0.53
INTERGENIC-chrVIII-236987-G-A 0.15 0.34 0.28 0.28 0.22 0.12 0.15 0.25 0.27 0.24 0.13 0.13 0.25
INTERGENIC-chrVIII-236993-T-A 0.12 0.25 0.21 0.19 0.17 0.00 0.00 0.18 0.16 0.17 0.08 0.11 0.12
第一列行。名称需要拆分为单独的列:
row.names X33 X40 X46 X50 X60 X80 X90 X100 X130 X200
我目前正在使用R来获得所需的输出
GENE, CHROMOSOME, POSITION, REF, ALT (INTERGENIC-chrI-188881-G-C)
library(重塑2)
A试试这个:
library(reshape2)
A <- colsplit(df$row.names, "\\-", names=c("GENE", "CHROMOSOME", "POSITION", "REF", "ALT"))
#虚拟数据
你试过strsplit吗?是的。但对我来说,这只是头球。我是个十足的新手。如何将其作为一个整体用于矩阵。你能给我一个命令吗。谢谢你的数据形式不太清楚。你能用几行代码和其他人容易复制的形式更新你的问题吗?我建议你使用它。@AnandaMahto看起来像基因型数据,行是VariantID
,列是sampleid
。上面的代码适用于你提供的样本数据。你的temp_df
看起来怎么样?我做得对吗?df您使用colsplit
提供的解决方案有效,只需将cbind
转换为原始df
。使用colsplit和cbind,我在数据中得到一个错误。frame(…,check.names=FALSE):参数意味着不同的行数:0,34很难判断失败的位置,如果您可以从文件中提供更多行,会有帮助吗?
#dummy data
df <- read.table(text="
Variants 33 40 46 50 60 80 90 100 130 200
ASG1-chrIX-103160-C-T 0 0 0 0 0 0.83 0.49 0 0 0
YNL179C-chrXIV-300948-T-A 0.27 0.32 0.24 0.25 0.23 0.22 0.17 0.16 0.2 0.3
",header=TRUE)
#split columns
temp_df <-
do.call(rbind,
strsplit(as.character(df$Variants),split="-"))
colnames(temp_df) <- c("GENE", "CHROMOSOME", "POSITION", "REF", "ALT")
#result
cbind(temp_df,df[,-1])
# GENE CHROMOSOME POSITION REF ALT X33 X40 X46 X50 X60 X80 X90 X100 X130 X200
# 1 ASG1 chrIX 103160 C T 0.00 0.00 0.00 0.00 0.00 0.83 0.49 0.00 0.0 0.0
# 2 YNL179C chrXIV 300948 T A 0.27 0.32 0.24 0.25 0.23 0.22 0.17 0.16 0.2 0.3
#using reshape2
library(reshape2)
A <- colsplit(df$Variants, "\\-", names=c("GENE", "CHROMOSOME", "POSITION", "REF", "ALT"))
#result
cbind(A,df[,-1])