用于计算R中参数之间的行的循环
我需要计算列用于计算R中参数之间的行的循环,r,R,我需要计算列旅程中“session\u start”行之间的步骤。我想不出如何为这种情况编写循环 df <- data.table( page = c("page_1", "page_2", "page_3", "page_1", "page_2", "page_1", "page_2", "page_3"), journey = c("session_start", NA, NA, "session_start", NA, "session_start", NA, NA)
旅程
中“session\u start”行之间的步骤。我想不出如何为这种情况编写循环
df <- data.table(
page = c("page_1", "page_2", "page_3", "page_1", "page_2", "page_1", "page_2", "page_3"),
journey = c("session_start", NA, NA, "session_start", NA, "session_start", NA, NA)
)
df这就是你想要的。确保将stringsAsFactors=F
添加到数据表中,否则旅程
列将无法正确处理
for (i in 1:nrow(df)) {
if (is.na(df$journey[i])) {
df$journey[i] <- paste('step',step_index,sep='')
step_index <- step_index + 1
} else {
step_index <- 1
}
}
for(1中的i:nrow(df)){
if(is.na(df$旅程[i])){
df$旅程[i]这正是您想要的。请确保将stringsAsFactors=F
添加到数据表中,否则旅程
列将无法正确处理
for (i in 1:nrow(df)) {
if (is.na(df$journey[i])) {
df$journey[i] <- paste('step',step_index,sep='')
step_index <- step_index + 1
} else {
step_index <- 1
}
}
for(1中的i:nrow(df)){
if(is.na(df$旅程[i])){
df$travely[i]您可以尝试以下方法:
df$journey <- ifelse(df$page == "page_1","session_start", gsub(".*_","step_",df$page))
您可以尝试以下方法:
df$journey <- ifelse(df$page == "page_1","session_start", gsub(".*_","step_",df$page))
使用ave
尝试此解决方案
i <- df$journey == "session_start"
i[is.na(i)] <- 0L
f <- cumsum(i)
df$journey <- ave(as.character(df$journey), f, FUN = function(s){
s[is.na(s)] <- paste0("step_", seq_along(s)[-length(s)])
s
})
i使用ave
尝试此解决方案
i <- df$journey == "session_start"
i[is.na(i)] <- 0L
f <- cumsum(i)
df$journey <- ave(as.character(df$journey), f, FUN = function(s){
s[is.na(s)] <- paste0("step_", seq_along(s)[-length(s)])
s
})
i