【问题标题】:Return a List of Counted, Unique Items返回计数的唯一项目列表
【发布时间】:2012-05-16 13:59:11
【问题描述】:

我收到了一个包含数十万个值的文件,它们在 .CSV 文件中的格式不一致。结构可能类似于:

A,B,C,D
E,F
G,H,I,J,K,L,M,N,O
P,Q,R,S

等等。

我需要做的就是 a) 列出唯一值并 b) 计算相同的实例。很高兴在 R、Excel 或任何其他推荐的工具中执行此操作。

通常,我会使用 Google Docs 的 =UNIQUE 和 =COUNT 函数,但电子表格太大而无法加载。奇怪的是,我也没有在 Excel 中找到确切的等价物。

任何帮助表示赞赏。

【问题讨论】:

    标签: excel r


    【解决方案1】:

    如果我理解正确,这应该可以(在 R 中):

    # Emulate your file
    cat('A,B,C,D\nB,D\nA,A,F,Q,F\n', file='foo.csv')
    
    x <- scan('foo.csv', what='', sep=',')
    table(x)
    #x
    #A B C D F Q 
    #3 2 1 2 2 1
    

    【讨论】:

    • 祝福你,这就像一个冠军!使用 write.csv() 将其写入 .csv,然后我将参加比赛。非常感谢!
    【解决方案2】:

    既然你说“任何其他工具”:

    %perl -F',' -a -n -e 'chomp, $count{$_}++ foreach (@F); END {print "$_: $count{$_}\n" foreach sort keys %count;}'
    

    【讨论】:

      【解决方案3】:

      我假设您知道如何将数据导入 R?像 read.csv 这样的东西应该可以工作...... 无需进入应用类型函数,您可以执行一个简单的循环来搜索唯一值(例如字母)的计数:

      set.seed(1)
      
      OBJ <- LETTERS[round(runif(1000, min=1, max=26))]
      VALS <- unique(OBJ)
      VALS
      COUNTS <- rep(0*length(VALS))
      for(i in seq(VALS)){
          COUNTS[i] <- length(which(OBJ==VALS[i]))
      }
      
      data.frame(VALS, COUNTS)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-07-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多