如何计算Java或R中唯一字符串的实例?

时间:2016-02-13 18:46:43

标签: java r

我正在尝试计算.txt列表中的日期实例,同时保持先前的计数,并存储在HashMap或TreeMap中

例如,如果我的文件开始

  • “2013年2月28日”
  • “2013年2月28日”
  • “2013年2月28日”
  • “2013年3月1日”
  • “2013年3月1日”

我想写迭代器

  • “02/28/2013”​​ - 3
  • “03/01/2013”​​ - 5

我正在尝试记录日期记录的次数,同时保留旧计数。我试过一个缓冲的读卡器,但我不知道如何在地图中保留旧计数。或者,我可以使用R,但我很不确定如何以与Java问题相同的方式记录实例。

4 个答案:

答案 0 :(得分:1)

R中,我们可以使用cumsum

对频次进行table
cumsum(table(v1))
#02/28/2013 03/01/2013 
#       3          5 

数据

v1 <- rep(c('02/28/2013', '03/01/2013'), c(3,2))

答案 1 :(得分:1)

另一种 R 方法是使用游程编码

if (rootFrame.CanGoBack)
{
    // Show UI in title bar if opted-in and in-app backstack is not empty.
    SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = 
        AppViewBackButtonVisibility.Visible;
}

这与@ akrun在未对值进行排序时的方法不同

> r = rle(v1)
> data.frame(value=r$values, cumlen=cumsum(r$lengths))
       value cumlen
1 02/28/2013      3
2 03/01/2013      5

答案 2 :(得分:0)

使用计数器迭代,并在值发生变化时记录结果:

Ideone

private static void printRunningCount(String ... input) {
    int count = 0;
    String prev = null;
    for (String value : input) {
        if (! value.equals(prev) || prev == null) {
            if (count != 0)
                System.out.println(prev + " - " + count);
            prev = value;
        }
        count++;
    }
    if (count != 0)
        System.out.println(prev + " - " + count);
}

答案 3 :(得分:0)

正如您所提到的,您可以创建单词的集合或映射以及它在文件中出现的次数。我不确定保留旧计数是什么。您的要求是将字符串中的字符串与字符串出现在文件中的次数保持一致。检查以下程序是否有帮助。

  

这是我的输入文件:

     

abc abc xyz xyz www www aaa aaa zcx zcx aaa abc xyz xyz abc

public class NewRepeatedCount  {

    public static void main(String... arg0)
    {
     BufferedReader br = null;
 Map<String, Integer> counterMap = new HashMap<String, Integer>();

    try {

        String sCurrentLine;

        br = new BufferedReader(new FileReader("C:\\testing.txt"));

        while ((sCurrentLine = br.readLine()) != null) {
            String[] words = sCurrentLine.split("\\s");
            for(String word : words)
            {
                int count = 1;
                if(counterMap.get(word) != null)
                {
                    count = counterMap.get(word);
                    count++;
                    counterMap.put(word, count);
                }else{
                    counterMap.put(word, count);
                }

            }
        }
        System.out.println(counterMap.entrySet());

    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            if (br != null)br.close();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
}

}

  

输出:[abc = 4,aaa = 3,www = 2,zcx = 2,xyz = 4]