我有一个奇怪的问题。我想计算某列中的唯一条目。这里我附上了我的csv文件。
我这样做是为了获取列中的唯一条目:
dat<-read.csv("Book1.csv")
names(dat)<-c("user_name")
unique(dat$user_name)
结果表明我有170个独特的价值观。
但是当我在Excel中“删除重复的条目”时,我在列中有147个唯一条目。
任何人都可以解释为什么结果不匹配,或者我做错了什么?
访问https://drive.google.com/file/d/0B71VF2HepgVyaFVKSFZrUFhGWm8/edit?usp=sharing获取我的csv文件
答案 0 :(得分:3)
我的钱很安全。 Excel忽略了大小写的差异。您可以通过将数据转换为大写并注意到您也有147个唯一值来判断:
> d=dat$user_name
> length(unique(d))
[1] 170
> dUp=toupper(d)
> length(unique(dUp))
[1] 147
>
另请注意,我认为您丢失了CSV中的第一个值,因为read.csv
默认认为第一个元素是标题。
答案 1 :(得分:1)
以下是使用VBA-Excel例程和上传文件的案例敏感问题的另一个“证据”。不区分大小写 - &gt; 147和区分大小写 - &gt; 170
Option Explicit
Sub Uniques()
Dim v As Variant
Dim i As Long
Dim dict As Dictionary
v = Range("a1", Cells(Rows.Count, "A").End(xlUp))
Set dict = New Dictionary
With dict
.CompareMode = TextCompare
For i = 1 To UBound(v)
If Not .Exists(CStr(v(i, 1))) Then _
.Add Key:=CStr(v(i, 1)), Item:=v(i, 1)
Next i
Debug.Print "Case Insensitive Uniques", dict.Count
End With
Set dict = New Dictionary
With dict
.CompareMode = BinaryCompare
For i = 1 To UBound(v)
If Not .Exists(CStr(v(i, 1))) Then _
.Add Key:=CStr(v(i, 1)), Item:=v(i, 1)
Next i
Debug.Print "Case Sensitive Uniques", .Count
End With
End Sub