R 按因子级别进行数据帧操作
这可能是个新手问题,但我到处都找遍了,找不到解决的办法。我在R中有一个数据帧,如下所示:R 按因子级别进行数据帧操作,r,R,这可能是个新手问题,但我到处都找遍了,找不到解决的办法。我在R中有一个数据帧,如下所示: Target Sample Regulation AKT1 00h 1.00000 AKT1 02h 1.27568 AKT1 06h -1.29813 AKT1 12h 1.12357 AKT1 48h 1.02284 AKT2 00h 1.00000 AKT2 02h 1.08692 AKT2 06h 1.19
Target Sample Regulation
AKT1 00h 1.00000
AKT1 02h 1.27568
AKT1 06h -1.29813
AKT1 12h 1.12357
AKT1 48h 1.02284
AKT2 00h 1.00000
AKT2 02h 1.08692
AKT2 06h 1.19489
AKT2 12h -1.07677
AKT2 48h -1.18955
Target/Sample AKT1 AKT2
00h 1.00000 1.00000
02h 1.27568 1.08692
06h -1.29813 1.19489
12h 1.12357 -1.07677
48h 1.02284 -1.18955
数据$Target和数据$Sample为类=系数
我需要创建一个如下所示的表:
Target Sample Regulation
AKT1 00h 1.00000
AKT1 02h 1.27568
AKT1 06h -1.29813
AKT1 12h 1.12357
AKT1 48h 1.02284
AKT2 00h 1.00000
AKT2 02h 1.08692
AKT2 06h 1.19489
AKT2 12h -1.07677
AKT2 48h -1.18955
Target/Sample AKT1 AKT2
00h 1.00000 1.00000
02h 1.27568 1.08692
06h -1.29813 1.19489
12h 1.12357 -1.07677
48h 1.02284 -1.18955
换句话说,我需要创建一个新的数据框架,其中列是data$Target levels,行是data$Sample levels,并用data$Regulation中的相应值填充它
这就是我能想到的:
newdata <- data.frame(Time=levels(data$Sample),
AKT1=as.numeric(data$Regulation[which(dat$Target=="AKT1",)]))
newdata您需要从长格式转换为宽格式。下面是使用重塑
的替代方法:
reshape(df, idvar = "Sample", timevar = "Target", direction = "wide")
Sample Regulation.AKT1 Regulation.AKT2
1 00h 1.00000 1.00000
2 02h 1.27568 1.08692
3 06h -1.29813 1.19489
4 12h 1.12357 -1.07677
5 48h 1.02284 -1.18955
您需要从长格式转换为宽格式。下面是使用重塑
的替代方法:
reshape(df, idvar = "Sample", timevar = "Target", direction = "wide")
Sample Regulation.AKT1 Regulation.AKT2
1 00h 1.00000 1.00000
2 02h 1.27568 1.08692
3 06h -1.29813 1.19489
4 12h 1.12357 -1.07677
5 48h 1.02284 -1.18955
我们可以使用tidyr
library(tidyr)
spread(df1, Target, Regulation)
# Sample AKT1 AKT2
#1 00h 1.00000 1.00000
#2 02h 1.27568 1.08692
#3 06h -1.29813 1.19489
#4 12h 1.12357 -1.07677
#5 48h 1.02284 -1.18955
我们可以使用tidyr
library(tidyr)
spread(df1, Target, Regulation)
# Sample AKT1 AKT2
#1 00h 1.00000 1.00000
#2 02h 1.27568 1.08692
#3 06h -1.29813 1.19489
#4 12h 1.12357 -1.07677
#5 48h 1.02284 -1.18955
尝试查看整形2包中的dcast这是一个很好的链接尝试查看整形2包中的dcast这是一个很好的链接,正是我所需要的。非常感谢@欢迎使用user3803664:-)@user3803664-或者使用restrape2
-restrape2::dcast(数据,样本~Target,value.var=“Regulation”)
。看看我到底需要什么。非常感谢@欢迎使用user3803664:-)@user3803664-或者使用restrape2
-restrape2::dcast(数据,样本~Target,value.var=“Regulation”)
。看见