如何使用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)但是我得到了一个错误,说替换数据的行数与数据的行数不同。有人能帮上忙吗?
发布于 2017-04-06 01:11:06
这可以通过使用'num‘分组并检查'x'1中是否有any 1元素来完成。base R中的ave代替了aggregate
df1$x2 <- with(df1, ave(x1==1, num, FUN = any))
df1$x2
#[1] 1 1 0 0或者使用dplyr,我们按'num‘分组,并通过检查any 'x1’是否等于1来创建'x2‘。如果我们没有使用as.integer包装以转换为二进制,则它将是一个逻辑向量
library(dplyr)
df1 %>%
group_by(num) %>%
mutate(x2 = as.integer(any(x1==1)))https://stackoverflow.com/questions/43237539
复制相似问题