R 如何分割文件并根据条件构建新变量?
我的数据如下所示: 可以使用以下代码创建示例数据:R 如何分割文件并根据条件构建新变量?,r,R,我的数据如下所示: 可以使用以下代码创建示例数据: Name<-c("form:ID","dave","mike","marry","rose","","Form:ID","mood","happy","sad","angry","","Fo
Name<-c("form:ID","dave","mike","marry","rose","","Form:ID","mood","happy","sad","angry","","Form:ID","dave","mike","marry","rose")
Sample.data <- data.frame( Name,stringsAsFactors = F)
Name这里有一个带有cumsum
的选项,用于根据“Name”列中的子字符串“ID”创建“page”,然后按该“page”分组,如果“Name”的第二个元素是“mood”,则标记为“Y”或否则为“N”
library(dplyr)
library(stringr)
Sample.data %>%
group_by(page = cumsum(str_detect(Name, '(?i)form:ID'))) %>%
mutate(Keep = if(Name[2] == 'mood') 'Y' else 'N') %>%
ungroup %>%
mutate(across(c(Keep, page), ~ replace(., Name == "", "")))
-输出
# A tibble: 17 x 3
# Name page Keep
# <chr> <chr> <chr>
# 1 "form:ID" "1" "N"
# 2 "dave" "1" "N"
# 3 "mike" "1" "N"
# 4 "marry" "1" "N"
# 5 "rose" "1" "N"
# 6 "" "" ""
# 7 "Form:ID" "2" "Y"
# 8 "mood" "2" "Y"
# 9 "happy" "2" "Y"
#10 "sad" "2" "Y"
#11 "angry" "2" "Y"
#12 "" "" ""
#13 "Form:ID" "3" "N"
#14 "dave" "3" "N"
#15 "mike" "3" "N"
#16 "marry" "3" "N"
#17 "rose" "3" "N"
#一个tible:17 x 3
#姓名页保留
#
#1“表格:ID”“1”“N”
#2“dave”1“N”
#3“麦克”1“N”
#4“结婚”1“N”
#5“玫瑰色”1“N”
# 6 "" "" ""
#7英寸表格:ID“2”Y
#8“语气”“2”“Y”
#9“快乐”2“Y”
#10“悲伤的”2“Y”
#11“愤怒的”2“Y”
#12 "" "" ""
#13“表格:ID”“3”“N”
#14“dave”“3”“N”
#15“麦克”“3”“N”
#16“结婚”3“N”
#17“玫瑰色”“3”“N”
您需要指定我们可以期望的规律性程度。记录中的行数是否总是相同的?记录的第一行有多少变化。您是否希望冒号后面的文本以类似“Form:ID”的行显示?