我有以下数据:
userID <- c(1,1,1,2,2,2,3,3,3)
product <- c("a","a","a","b","b","c","a","b","c")
df <- data.frame(userID, product)
对于每个“userID”,我想创建一个二元指示变量,如果有多个不同的产品,则为1,如果所有产品都相同,则为0。
因此,我的填充向量将如下所示:
df$result <- c(0,0,0,1,1,1,1,1,1)
# userID product result
# 1 1 a 0
# 2 1 a 0
# 3 1 a 0
# 4 2 b 1
# 5 2 b 1
# 6 2 c 1
# 7 3 a 1
# 8 3 b 1
# 9 3 c 1
例如,用户1只有一个独特的产品('a')-> 结果=0。 用户2有多个独特的产品('b'和'c')-> 结果=1。
as.character
或者也许as.numeric
也可以。 - akruntransform
添加类似的解决方案,例如transform(df, result = ave(as.character(product), userID, FUN = function(x) length(unique(x)) > 1) + 0))
。 - David Arenburgtbl <- rowSums(!!table(df[,-3]))>1
将第二行代码修改为:(df$userID %in% names(tbl)[tbl])+0
- Daryl