如何将聚合变量添加到R中的现有数据集

时间:2017-04-05 17:09:59

标签: r aggregate

如何使用aggregateby命令向数据集添加变量?例如,我有:

num x1  
1 1  
1 0  
2 0  
2 0 

我正在寻找创建一个变量来识别任何num为1的变量,例如:

num x1 x2  
1 1 1  
1 0 1  
2 0 0  
2 0 0

num x1 x2  
1 1 TRUE  
1 0 TRUE  
2 0 FALSE  
2 0 FALSE 

我试过用

df$x2 <- aggregate(df$x1, by = list(df$num), FUN = sum)

但我收到一条错误消息,指出替换行的数量与数据不同。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

这可以通过使用'num'分组并检查'x'1中是否有any 1个元素来完成。来自ave的{​​{1}}对此方便,而不是base R

aggregate

或者使用df1$x2 <- with(df1, ave(x1==1, num, FUN = any)) df1$x2 #[1] 1 1 0 0 ,我们按'num'分组,并通过检查dplyr'x1'是否等于1来创建'x2'。如果我们不包装,它将是一个逻辑向量用any转换为二进制

as.integer