R中的Mapreduce - 我如何在reduce中实现“loop if”?

时间:2014-06-18 10:04:28

标签: r loops if-statement mapreduce

这是我的示例数据集:

x <- c("A1", "A1", "A1", "A2", "A2", "A2", "A2", "A3")
y <- c(5347, 5347, 5347, 1819, 1758, 1212, 1212, 1456)

我无法像“map | sort”之后的mapreduce的查询那样准备这个数据集,因为我有单独的 \ t ,在此之后(mapreduce中需要分步行的步骤): / p>

fields <- unlist(strsplit(line, "\t"))

line 是我的输入我得到两个字段:

  • fields [[1]] = 所有列x
  • fields [[2]] = 所有列y

我想得到这个结果:

ID Count Unique number  
A1    1 (only 5347)
A2    3 (1819, 1758, 1212)
A3    1 (only 1456)

如何计算这一点,其中循环观察X和Y列,只要在X列中搜索新数字并在列Y中计算X列中所有唯一数字的唯一数字?

1 个答案:

答案 0 :(得分:1)

问题不明确(也许是因为英语问题)。但是从预期的结果来看,我认为你正在寻找类似的东西:

tapply(y,x,function(t)length(unique(t)))

A1 A2 A3 
 1  3  1 

用英语写的:

  

计算每个x的唯一y的数量。