【发布时间】:2021-06-22 02:56:57
【问题描述】:
我有一个带有名称的大型数据框和一个名为 sequence 的“分类”变量。 sequence 说明关于其他行的位置。它有两个值:first 和 additional。 问题是这些值的分布不均匀,即每个 first 没有一个 additional,每个 letters 值都是唯一的. 数据框长这样(简化版):
letters <- sample(LETTERS, 20)
sequence <- c("first","additional","first","first","first","first","first","additional","additional","additional","first","first","additional","first","additional","additional","first","additional","first","first")
df <- data.drame(sequence, letters)
现在,我要做的是将 letters 中的每个 additional 值粘贴到 中对应的 first 值中字母。 因此,例如,letters 列中的第二个(行)值将被粘贴到第一个中,因为它是对应的附加。此外,letters中的第八、第九和第十个值应粘贴在letters的第七个值的内部(旁边)(例如,first; 附加;附加;附加)。
我已经尝试了以下明显限制,即它只查看紧邻的下一个值,
library(dplyr)
df <- df %>% mutate(letters_ok = if_else(sequence == "additional",
paste(letters, lag(letters), sep = "; "), letters))
突出我的问题:我如何设法有条件地滞后于 sequence 中的值,以便我可以根据 first 粘贴 letters 中的值还是附加分类?
由于每个 letters 值都是唯一的,并且与特定的 sequence 值相关联,因此我没有使用 group_by。其他所有解决方案都无法解决我目前对字符串/字符争论的了解,所以我非常感谢任何帮助。
【问题讨论】:
标签: r dataframe if-statement conditional-statements lag