Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将条件应用于R中的多个列_R_Market Basket Analysis_Dummy Variable - Fatal编程技术网

将条件应用于R中的多个列

将条件应用于R中的多个列,r,market-basket-analysis,dummy-variable,R,Market Basket Analysis,Dummy Variable,我有一个数据集,它以虚拟变量的形式表示每个客户的一个篮子 例如: P1 P2 P3 P4 P5 0 2 0 0 0 0 1 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 5 0 0 1 1 0 0 0 其中P1表示产品1,依此类推 本质上,我想运行一个简单的查询,在其中我可以将所有大于1的值转换为1。这样,我的数据中只有1和0。我可以使用以下工具完成几行操作: df[(df$

我有一个数据集,它以虚拟变量的形式表示每个客户的一个篮子

例如:

P1  P2  P3  P4  P5
0   2   0   0   0
0   1   0   0   0
0   0   0   3   0 
0   0   0   0   0
0   0   5   0   0
1   1   0   0   0
其中P1表示产品1,依此类推

本质上,我想运行一个简单的查询,在其中我可以将所有大于1的值转换为1。这样,我的数据中只有1和0。我可以使用以下工具完成几行操作:

df[(df$P1>1] <- 1

df[(df$P1>1]您可以通过使用
+
包装将其转换为逻辑矩阵并强制转换为二进制

+(df > 0)
#     P1 P2 P3 P4 P5
#[1,]  0  1  0  0  0
#[2,]  0  1  0  0  0
#[3,]  0  0  0  1  0
#[4,]  0  0  0  0  0
#[5,]  0  0  1  0  0
#[6,]  1  1  0  0  0
或者使用稍慢的
ifelse

ifelse(df > 0, 1, 0)

如果数据集非常大,则创建
矩阵
可能无法节省内存。我们可以将其转换为
data.table
(假设初始数据集为
data.frame
),然后使用
set
将值更改为1

library(data.table)
setDT(df)
for(j in seq_along(df)){
  set(df, i= which(df[[j]] > 1), j=j, value=1)
 }

df
#   P1 P2 P3 P4 P5
#1:  0  1  0  0  0
#2:  0  1  0  0  0
#3:  0  0  0  1  0
#4:  0  0  0  0  0
#5:  0  0  1  0  0
#6:  1  1  0  0  0

这应该与您尝试的方法相同:

df[df > 0] <- 1
df
  P1 P2 P3 P4 P5
1  0  1  0  0  0
2  0  1  0  0  0
3  0  0  0  1  0
4  0  0  0  0  0
5  0  0  1  0  0
6  1  1  0  0  0

df[df>0]为什么不同时玩
class

`class<-`(!!df, "numeric")

#     P1 P2 P3 P4 P5
#[1,]  0  1  0  0  0
#[2,]  0  1  0  0  0
#[3,]  0  0  0  1  0
#[4,]  0  0  0  0  0
#[5,]  0  0  1  0  0
#[6,]  1  1  0  0  0
`class