我正在使用R开展分析项目。作为数据准备模块的一部分,我遇到了特定的任务。我有一个分类列和一个响应变量,如下所示:
我需要构建顺序填充,如下所示。它应该如下所示构造:
逻辑如下: 考虑步骤= 3。从实际数据考虑前3行a,b,c和是/否列有一个'是'。因此,得到的矩阵中的a,b,c,d,e,f的各个值用“是”填充为1,1,1,0,0,0。下一步有b,c,b,所以得到的矩阵用0,2,1,0,0,0填充为是。应重复此过程,直到源数据中的最后一个序列。
是否有可能构建上述内容。任何人都可以帮助构建这个逻辑,使用R构建上述结果矩阵。
提前感谢你。
答案 0 :(得分:1)
使用来自动物园的rollapply
table
和any
:
library(zoo)
step <- 3
data.frame(
rollapply(DF$Features, step, table),
"Yes/No" = ifelse(rollapply(DF$"Yes/No" == "Yes", step, any), "Yes", "No"),
check.names = FALSE
)
,并提供:
a b c d e f Yes/No
1 1 1 1 0 0 0 Yes
2 0 2 1 0 0 0 Yes
3 0 1 1 1 0 0 No
4 0 1 0 1 1 0 Yes
5 1 0 0 1 1 0 Yes
6 1 0 0 0 1 1 Yes
输入DF
,可重复的形式:
DF <- data.frame(Features = c("a", "b", "c", "b", "d", "e", "a", "f"),
"Yes/No" = c("No", "Yes", "No", "No", "No", "Yes", "No", "No"),
check.names = FALSE)