R 在列中的每个重复点拆分数据帧
我有一个数据帧R 在列中的每个重复点拆分数据帧,r,dataframe,split,R,Dataframe,Split,我有一个数据帧 df<-data.frame(var1=c(1:11),I_var1=c(11:21), var2=c(rep(c(0,0.1),each=5),0.1),var4=c(rep(c(0:4),2),4)) var1 I_var1 var2 var4 1 11 0.0 0 2 12 0.0 1 3 13 0.0 2 4 14 0.0 3 5 15 0.
df<-data.frame(var1=c(1:11),I_var1=c(11:21),
var2=c(rep(c(0,0.1),each=5),0.1),var4=c(rep(c(0:4),2),4))
var1 I_var1 var2 var4
1 11 0.0 0
2 12 0.0 1
3 13 0.0 2
4 14 0.0 3
5 15 0.0 4
6 16 0.1 0
7 17 0.1 1
8 18 0.1 2
9 19 0.1 3
10 20 0.1 4
11 21 0.1 4
df
更新
或更短
library(data.table)
library(dplyr)
df<-data.frame(var1=c(1:11),I_var1=c(11:21),
var2=c(rep(c(0,0.1),each=5),0.1),var4=c(rep(c(0:4),2),4))
cuts <- which(df$var4==0)
df <- as.data.table(df)
df[,nrow:=.I]
list <- list()
for(i in 1:length(cuts)){ # i <- 2
if(i==length(cuts)){
list[[i]] <- df[nrow%in%c(cuts[i]:nrow(df)),]
}else{
list[[i]] <- df[nrow%in%c(cuts[i]:(cuts[i+1]-1)),]
}
}
库(data.table)
图书馆(dplyr)
df
更新
或更短
library(data.table)
library(dplyr)
df<-data.frame(var1=c(1:11),I_var1=c(11:21),
var2=c(rep(c(0,0.1),each=5),0.1),var4=c(rep(c(0:4),2),4))
cuts <- which(df$var4==0)
df <- as.data.table(df)
df[,nrow:=.I]
list <- list()
for(i in 1:length(cuts)){ # i <- 2
if(i==length(cuts)){
list[[i]] <- df[nrow%in%c(cuts[i]:nrow(df)),]
}else{
list[[i]] <- df[nrow%in%c(cuts[i]:(cuts[i+1]-1)),]
}
}
库(data.table)
图书馆(dplyr)
df(不确定,如果我完全理解你的话…)
df(不确定,如果我完全理解你的意思….)
df简单地说:
split(df,duplicated(df$var4))
$`FALSE`
var1 I_var1 var2 var4
1 1 11 0 0
2 2 12 0 1
3 3 13 0 2
4 4 14 0 3
5 5 15 0 4
$`TRUE`
var1 I_var1 var2 var4
6 6 16 0.1 0
7 7 17 0.1 1
8 8 18 0.1 2
9 9 19 0.1 3
10 10 20 0.1 4
11 11 21 0.1 4
简单地说:
split(df,duplicated(df$var4))
$`FALSE`
var1 I_var1 var2 var4
1 1 11 0 0
2 2 12 0 1
3 3 13 0 2
4 4 14 0 3
5 5 15 0 4
$`TRUE`
var1 I_var1 var2 var4
6 6 16 0.1 0
7 7 17 0.1 1
8 8 18 0.1 2
9 9 19 0.1 3
10 10 20 0.1 4
11 11 21 0.1 4
下面是一个dplyr
解决方案:
df <- data.frame(var1=c(1:11),I_var1=c(11:21),
var2=c(rep(c(0,0.1),each=5),0.1),var4=c(rep(c(0:4),2),4))
df %>%
group_by(var4) %>%
mutate(split = row_number()) %>%
split(., f = .$split)
df%
分组依据(var4)%>%
变异(拆分=行数())%>%
分割(,f=.$split)
这里有一个dplyr
解决方案:
df <- data.frame(var1=c(1:11),I_var1=c(11:21),
var2=c(rep(c(0,0.1),each=5),0.1),var4=c(rep(c(0:4),2),4))
df %>%
group_by(var4) %>%
mutate(split = row_number()) %>%
split(., f = .$split)
df%
分组依据(var4)%>%
变异(拆分=行数())%>%
分割(,f=.$split)
它应该是什么样子?2个列表包含所有列,但是var4应该是0:4,因为我想在每次var4列中出现4时剪切,显示它应该是?2个列表包含所有列,但是var4应该是0:4,因为每次在var4中出现4时,我都希望剪切它columns@P谢谢!!我不知道这个复制函数!真的很有帮助。@P拉波特谢谢!!我不知道这个复制函数!真的很有帮助。
df <- data.frame(var1=c(1:11),I_var1=c(11:21),
var2=c(rep(c(0,0.1),each=5),0.1),var4=c(rep(c(0:4),2),4))
df %>%
group_by(var4) %>%
mutate(split = row_number()) %>%
split(., f = .$split)