如何在R中构建计数填充矩阵

时间:2018-05-15 11:46:52

标签: r dataframe matrix frequency crosstab

我正在使用R开展分析项目。作为数据准备模块的一部分,我遇到了特定的任务。我有一个分类列和一个响应变量,如下所示: Pic1

我需要构建顺序填充,如下所示。它应该如下所示构造: Pic2

逻辑如下: 考虑步骤= 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构建上述结果矩阵。

提前感谢你。

1 个答案:

答案 0 :(得分:1)

使用来自动物园的rollapply tableany

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)