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

这可能是个新手问题,但我到处都找遍了,找不到解决的办法。我在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.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”)
。看见