값으로 data.frame 분할과 유사하게 df를 값으로 분할하고 싶습니다. 제 경우에는 값이 항상 정확히 같지는 않습니다. 나는 이것을 시도했지만 성공하지 못했습니다.
df <- data.frame(var1 = c("ab", 1, 2, 3, "ac", 1, 2, 3, 4, 5, 6, "ad", 1, 2), var2 = 1:14)
나는 *로 나누고 싶다. 다음과 같이 표시되어야합니다.
ab 1
1 2
2 3
3 4
ac 5
1 6
2 7
3 8
4 9
5 10
6 11
ad 12
1 13
2 14
나는 그것을 얻기 위해 이것을 시도했다
df[,1] == "a*"
#it shows all over 0
#I would do sth. like that
#split(df, cumsum(df[,1] == "a*"))
나는 *
잘못된 것 같다. 하지만 R을 어떻게 말해야합니까?
을 사용 grepl
하여 패턴을 일치시키고 그 cumsum
위에 그룹을 만들 수 있습니다.
split(df, cumsum(grepl('a.*', df$var1)))
#$`1`
# var1 var2
#1 ab 1
#2 1 2
#3 2 3
#4 3 4
#$`2`
# var1 var2
#5 ac 5
#6 1 6
#7 2 7
#8 3 8
#9 4 9
#10 5 10
#11 6 11
#$`3`
# var1 var2
#12 ad 12
#13 1 13
#14 2 14
에 상응하는 답변 tidyverse
:
library(dplyr)
library(stringr)
df %>% group_split(cumsum(str_detect(var1, 'a.*')), keep = FALSE)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다