如何使用aggregate
和by
命令向数据集添加变量?例如,我有:
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)
但我收到一条错误消息,指出替换行的数量与数据不同。有人可以帮忙吗?
答案 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