如何在 R 中构建计数填充矩阵
How to build counts filled matrix in R
我正在使用 R 进行分析项目。作为数据准备模块的一部分,我遇到了一项特定任务。我有一个分类列和一个响应变量,如下所示:
.
我需要构建如下顺序填充。它应该构造如下所示:
逻辑如下:
考虑步骤 =3。从实际数据来看,前 3 行 a、b、c 和 yes/no 列有一个 'Yes'。所以结果矩阵中的a,b,c,d,e,f各自的值用Yes填充为1,1,1,0,0,0。下一步有b,c,b,所以得到的矩阵用Yes填充为0,2,1,0,0,0。应重复此过程,直到源数据中的最后一个序列。
有没有可能构造上面的。任何人都可以帮助构建此逻辑以使用 R.
构建上述结果矩阵
提前致谢。
使用来自动物园的 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)
我正在使用 R 进行分析项目。作为数据准备模块的一部分,我遇到了一项特定任务。我有一个分类列和一个响应变量,如下所示:
我需要构建如下顺序填充。它应该构造如下所示:
逻辑如下: 考虑步骤 =3。从实际数据来看,前 3 行 a、b、c 和 yes/no 列有一个 'Yes'。所以结果矩阵中的a,b,c,d,e,f各自的值用Yes填充为1,1,1,0,0,0。下一步有b,c,b,所以得到的矩阵用Yes填充为0,2,1,0,0,0。应重复此过程,直到源数据中的最后一个序列。
有没有可能构造上面的。任何人都可以帮助构建此逻辑以使用 R.
构建上述结果矩阵提前致谢。
使用来自动物园的 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)