我想使每3列在不同的组在数据框架中分组。我已经附上了示例数据帧图像。它有12列。
示例数据帧

根据模式,我必须对列进行分组。对于6列数据帧,用户可以给出(0,0,0,1,1,1)的模式,并按以下方式分割数据帧。
data = as.matrix(input_data)
id0 = which(class == 0)
id1 = which(class == 1)
data0 <- data[,id0]
data1 <- data[,id1]通过这种方式,我也可以做12列数据帧。
但是数据框架不是固定的。这是一个质谱表达数据集。它可能有任意数量的列,但它们都是一式三份的数据,这意味着它们可以除以3。
class = c(0,0,0,1,1,1)
length(class)
x <- length(class)/3
x上面的代码我已经尝试找出所需的组数。
因此,请为此问题提供任何循环操作。因为数据可能对每个实验都有影响。
发布于 2022-07-06 10:38:19
让我们用虚拟数据编写这个脚本
df<-data.frame(rep(data.frame(n1=c(0:6),n2=c(0:6)),3))
stack_scipt1<-function(df,replicate_value){ #df= dataframe, replicate value= no, of replicates input by user
df<-read.csv(file.choose(),header = TRUE) #loads csv file into R as dataframe from pc folder where it is stored
df_col<-ncol(df) #calculates no. of columns in dataframe
groups<-sort(rep(0:((df_col/replicate_value)-1),replicate_value)) #creates user determined groups
id<-list() #creates empty list
for (i in 1:length(unique(groups))){
id[[i]]<-which(groups == unique(groups)[i])} #creates list of groups
names(id)<-paste0("id",unique(groups)) #assigns group based names to the list "id"
data<-list() #creates empty list
for (i in 1:length(id)){
data[[i]]<-df[,id[[i]]]} #creates list of dataframe columns sorted by groups
names(data)<-paste0("data",unique(groups)) #assigns group based names to the list "data"
return(data)}执行脚本:
>stack_script1(df,3)注意:
df<-read.csv(file.choose(),header = TRUE)并不是必需的。我更喜欢使用它,因为它允许我从保存文件夹导入数据,而不需要导入它,additionally返回多个数据帧向量
https://stackoverflow.com/questions/72879652
复制相似问题