R:计算数据集中每行的值数并创建新列

时间:2017-10-10 16:54:41

标签: r

提前致谢。 我需要在数据帧中计算每行的现有值(o,1,2)的数量,并为每个值的计数数创建3列 我用了这个例子:

example <- data.frame(var1 = c(2,3,3,2,4,5), 
              var2 = c(2,3,5,4,2,5), 
              var3 = c(3,3,4,3,4,5))
example <- cbind(example, apply(example, 1, function(x)length(unique(x))))

但它只返回唯一值的数量。

1 个答案:

答案 0 :(得分:2)

这是你想要的吗?

all_vals = unique(unlist(example))
tt = t(apply(example, 1, function(x) table(factor(x, levels = all_vals))))
cbind(example, tt)
#   var1 var2 var3 2 3 4 5
# 1    2    2    3 2 1 0 0
# 2    3    3    3 0 3 0 0
# 3    3    5    4 0 1 1 1
# 4    2    4    3 1 1 1 0
# 5    4    2    4 1 0 2 0
# 6    5    5    5 0 0 0 3

下一步是重新命名新列。