[英]row-wise iteration in a dataframe where each row depends on previous row calculation in R
[英]Row-wise operations in a dataframe where each row depends on previous row in R
我想在 dataframe 中從一列和某行中找到一些值與來自同一列和前一行的值的組合。 這是一個可重現的例子。
我有四種可能的條件,我想識別成對的(兩)連續行。
library(tidyverse)
library(purrr)
df <- data.frame(
condition = sample(
x = c("IL", "IR", "EL", "ER"), size = 10, replace = TRUE
)
)
df
condition
1 IR
2 EL
3 IR
4 EL
5 ER
6 IL
7 IR
8 EL
9 EL
10 EL
換句話說,我想得到一個“對”列,例如:
condition pair
1 IR NA
2 EL IR-EL
3 IR EL-IR
4 EL IR-EL
5 ER EL-ER
6 IL ER-IL
7 IR IL-IR
8 EL IR-EL
9 EL EL-EL
10 EL EL-EL
我曾嘗試將 purrr::accumulate() 與 paste() 結合使用,但它會累積所有先前的值。 我怎樣才能只保留以前和當前的值(即滯后 1)?
df %>%
mutate(
pair = accumulate(
.x = condition,
.f = ~paste(.x, .y, sep = "-")
)
)
condition pair
1 IL IL
2 ER IL-ER
3 IL IL-ER-IL
4 IL IL-ER-IL-IL
5 EL IL-ER-IL-IL-EL
6 EL IL-ER-IL-IL-EL-EL
7 IL IL-ER-IL-IL-EL-EL-IL
8 IL IL-ER-IL-IL-EL-EL-IL-IL
9 IL IL-ER-IL-IL-EL-EL-IL-IL-IL
10 IR IL-ER-IL-IL-EL-EL-IL-IL-IL-IR
我只想保留成對的兩個連續試驗。 任何想法? 注意:我更喜歡 tidyverse 選項。
使用lag
。
df %>%
mutate(pair = paste(lag(condition),condition,sep="-"))
condition pair
1 ER NA-ER
2 EL ER-EL
3 IR EL-IR
4 ER IR-ER
5 ER ER-ER
6 IR ER-IR
7 IR IR-IR
8 IR IR-IR
9 IR IR-IR
10 EL IR-EL
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.