如何解决使用重塑包装熔化数字列标题时,值会更改
colnames<-c('Assay','Sample','Interference','0','24','48','168')
Assay<-c('1','2','3','4','5','6','7','8','9')
Sample<-c('S1.16S','B2','B5','B32','B36','B39','B47','B57','A15')
Interference<-c('N','Y','N','Y')
'0'<-c(14.337,24.21,14.97,15.51,14.64,28.83,13.63,21.08,20.26)
'24'<-c(NA,25.13,14.99,15.35,14.71,28.64,13.68,22.04,20.64)
'48'<-c(NA,25.32,15.00,15.97,28.69,13.87,NA,22.14)
'168'<-c(NA,24.7,15.09,17.31,14.67,14.9,23.22,21.56)
d<-data.frame(Assay,Sample,Interference,24,48,168,check.names=FALSE)
当使用reshape软件包将数据融为长格式时,列0、24、48和168的值将更改为1-4,如下所示:
library(reshape)
dlong<-melt(d,id.vars=c('Assay','Interference'),measure.vars=c('0','168'))
dlong$variable<-as.numeric(dlong$variable)
head(dlong)
# Assay Sample Interference variable value
#1 1 S1.16S N 1 0
#2 2 B2 Y 1 0
#3 3 B5 N 1 0
#4 4 B32 N 1 0
#5 5 B36 N 1 0
#6 6 B39 Y 1 0
如何将数字值(0,168)保留在“变量”列中,而不必稍后使用其他代码进行转换?我需要对整个数据集进行下游相关性分析,这在我的处理时间上造成了相当大的滞后。
解决方法
我建议检查您的数据结构。您遇到的问题是由于因素结构造成的。为避免此问题,请在您的stringsAsFactors=F
中添加data.frame()
。接下来的代码可能对您有用:
library(reshape2)
#Data
colnames<-c('Assay','Sample','Interference','0','24','48','168')
Assay<-c('1','2','3','4','5','6','7','8','9')
Sample<-c('S1.16S','B2','B5','B32','B36','B39','B47','B57','A15')
Interference<-c('N','Y','N','Y')
'0'<-c(14.337,24.21,14.97,15.51,14.64,28.83,13.63,21.08,20.26)
'24'<-c(NA,25.13,14.99,15.35,14.71,28.64,13.68,22.04,20.64)
'48'<-c(NA,25.32,15.00,15.97,28.69,13.87,NA,22.14)
'168'<-c(NA,24.7,15.09,17.31,14.67,14.9,23.22,21.56)
d<-data.frame(Assay,Sample,Interference,24,48,168,check.names=FALSE,stringsAsFactors = F)
#Reshape
dlong<-melt(d,id.vars=c('Assay','Interference'),measure.vars=c('0','168'))
输出:
Assay Sample Interference variable value
1 1 S1.16S N 0 0
2 2 B2 Y 0 0
3 3 B5 N 0 0
4 4 B32 N 0 0
5 5 B36 N 0 0
6 6 B39 Y 0 0
7 7 B47 N 0 0
8 8 B57 Y 0 0
9 9 A15 Y 0 0
10 1 S1.16S N 24 24
11 2 B2 Y 24 24
12 3 B5 N 24 24
13 4 B32 N 24 24
14 5 B36 N 24 24
15 6 B39 Y 24 24
16 7 B47 N 24 24
17 8 B57 Y 24 24
18 9 A15 Y 24 24
19 1 S1.16S N 48 48
20 2 B2 Y 48 48
21 3 B5 N 48 48
22 4 B32 N 48 48
23 5 B36 N 48 48
24 6 B39 Y 48 48
25 7 B47 N 48 48
26 8 B57 Y 48 48
27 9 A15 Y 48 48
28 1 S1.16S N 168 168
29 2 B2 Y 168 168
30 3 B5 N 168 168
31 4 B32 N 168 168
32 5 B36 N 168 168
33 6 B39 Y 168 168
34 7 B47 N 168 168
35 8 B57 Y 168 168
36 9 A15 Y 168 168
,
如果我们使用R版本> = 4.0.0,则默认选项为stringsAsFactors = FALSE
,因此我们不必更改data.frame
的构造
library(dplyr)
library(tidyr)
d %>%
pivot_longer(cols = `0`:`168`)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。