我收到了一个包含数十万个值的文件,它们在 .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 中找到确切的等价物。
任何帮助表示赞赏。
如果我理解正确,这应该有效(在 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
既然你说“任何其他工具”:
%perl -F',' -a -n -e 'chomp, $count{$_}++ foreach (@F); END {print "$_: $count{$_}\n" foreach sort keys %count;}'
我假设您知道如何将数据导入 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)